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.