avoid toLower in std.algorithm.sort compare alias
Jay Norwood
jayn at prismnet.com
Sat Apr 21 16:24:56 PDT 2012
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.
More information about the Digitalmars-d-learn
mailing list