Atila Neves: "C IS NOT MAGICALLY FAST, PART 2"

Ali Çehreli via Digitalmars-d digitalmars-d at puremagic.com
Tue Jul 19 12:00:08 PDT 2016


On 07/19/2016 10:41 AM, deadalnix wrote:
> On Tuesday, 19 July 2016 at 10:07:11 UTC, Atila Neves wrote:
>> On Tuesday, 19 July 2016 at 02:54:37 UTC, Saurabh Das wrote:
>>>
>>> Posted on Atila's blog yesterday:
>>>
>>> https://atilanevesoncode.wordpress.com/2016/07/18/c-is-not-magically-fast-part-2/
>>>
>>
>> So, about D vs C++ there... last night for reasons I forget I tried
>> replacing std::string with const char* in the C++ version, and then it
>> got faster than D. I don't know why.
>>
>> At first I thought std::string was being copied instead of being
>> moved, but some static_asserts made me doubt that. Either way, there's
>> no good reason I can think of for C++ to magically speed up for const
>> char*. Hmm :(
>>
>> Atila
>
> What compiler are you using ? If it is LLVM based, could you post IR ?
>
> Also:
>
> if(i < other.i) return -1;
> if(i > other.i) return 1;
>
> Should be
>
> (i > other.i) - (i < other.i)
>
> Surprisingly, LLVM was unable to optimize one into the other in my tests.

Additionally, the string may be traversed twice in opCmp. The following 
change makes D example faster:

         import std.algorithm : cmp;
         return cmp(s, other.s);
//        return s < other.s
//            ? -1
//            : (s > other.s ? 1 : 0);

Ali



More information about the Digitalmars-d mailing list