Speed of math function atan: comparison D and C++

rikki cattermole rikki at cattermole.co.nz
Mon Mar 5 06:08:03 UTC 2018


On 05/03/2018 7:01 PM, J-S Caux wrote:
> 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.

Yes, but that doesn't show me how you benchmarked.


More information about the Digitalmars-d-learn mailing list