Speed of math function atan: comparison D and C++
J-S Caux
js at gmail.com
Mon Mar 5 06:01:27 UTC 2018
On Monday, 5 March 2018 at 05:40:09 UTC, rikki cattermole wrote:
> On 05/03/2018 6:35 PM, J-S Caux wrote:
>> I'm considering shifting a large existing C++ codebase into D
>> (it's a scientific code making much use of functions like
>> atan, log etc).
>>
>> I've compared the raw speed of atan between C++ (Apple LLVM
>> version 7.3.0 (clang-703.0.29)) and D (dmd v2.079.0, also ldc2
>> 1.7.0) by doing long loops of such functions.
>>
>> I can't get the D to run faster than about half the speed of
>> C++.
>>
>> Are there benchmarks for such scientific functions published
>> somewhere
>
> Gonna need to disassemble and compare them.
>
> atan should work out to only be a few instructions (inline
> assembly) from what I've looked at in the source.
>
> Also you should post the code you used for each.
So the codes are trivial, simply some check of raw speed:
double x = 0.0;
for (int a = 0; a < 1000000000; ++a) x += atan(1.0/(1.0 +
sqrt(1.0 + a)));
for C++ and
double x = 0.0;
for (int a = 0; a < 1_000_000_000; ++a) x += atan(1.0/(1.0 +
sqrt(1.0 + a)));
for D. C++ exec takes 40 seconds, D exec takes 68 seconds.
More information about the Digitalmars-d-learn
mailing list