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