avoid toLower in std.algorithm.sort compare alias

SomeDude lovelydear at mailmetrash.com
Sun Apr 22 13:43:15 PDT 2012


On Saturday, 21 April 2012 at 23:24:57 UTC, Jay Norwood wrote:
> While playing with sorting the unzip archive entries I tried 
> use of the last example in 
> http://dlang.org/phobos/std_algorithm.html#sort
>
> std.algorithm.sort!("toLower(a.name) < 
> toLower(b.name)",std.algorithm.SwapStrategy.stable)(entries);
>
> It was terribly slow  for sorting the 34k entries in my test 
> case.  I'd guess it is doing the toLower call on both strings 
> for every compare.
>
> It was much, much faster to add an entries.lowerCaseName = 
> std.string.toLower(entries.name) foreach entry prior to the 
> sort execution and then use
>
> std.algorithm.sort!("a.lowerCaseName < b.lowerCaseName 
> ",std.algorithm.SwapStrategy.stable)(entries);
>
> The difference was on the order of 10 secs vs no noticeable 
> delay when executing the sort operation in the debugger.

Good point. Perhaps this should be added in the documentation of 
std.algorithm ? It's easy to get trapped.


More information about the Digitalmars-d-learn mailing list