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