Associative array of strings perf

Peter Alexander peter.alexander.au at gmail.com
Sat Nov 19 01:36:46 PST 2011


On 19/11/11 4:34 AM, Alex Rønne Petersen wrote:
> On 19-11-2011 04:07, bearophile wrote:
>> Do you know why an associative array like this:
>> uint[immutable(char)[]] aa;
>>
>> Is almost two times faster than a very similar associative array like
>> this?
>> uint[immutable(E)[]] aa;
>>
>> Where E is a named typed enum of chars like:
>> enum E : char { a='a', b='b', c='c', d='d', ... }
>>
>> Testing code:
>> http://codepad.org/hzcRH8Bd
>>
>> Bye,
>> bearophile
>
> With an enum, I assume the hashes can be precomputed.
>
> - Alex

Then shouldn't the enum be faster? :-)

alias immutable(char)[] MyString; // runtime 4.41 seconds
//alias immutable(E)[] MyString;  // runtime 7.92 seconds

My guess is that DMD has an optimised path for strings that isn't (but 
should be) used for char-typed enums.


More information about the Digitalmars-d mailing list