On Saturday, 21 April 2012 at 23:54:26 UTC, Jonathan M Davis
wrote:
Yeah. toLower would be called on both strings on _every_
compare. And since
that involves a loop, that would make the overall call to sort
an order of
magnitude worse than if you didn't call toLower at all. I'm not
sure if it's
an order of magnitude worse than your solution though, since
it's been a while
since I studied Big(O) notation (doing the conversion only once
is still more
expensive than not converting, but I'm not sure how much more
expensive - it
might cost less than sort such that it actually doesn't matter
as for as
Big(O) goes though).
- Jonathan M Davis
use of toLower in the sort expression adds around 11.2 secs
overhead to a 0.3 sec operation which reads and sorts the 34k
directory entries in this 2GB layout on the ssd drive, so it
isn't an option for me.
finished! time:312 ms
finished! time:11598 ms
std.algorithm.sort!("toLower(a) <
toLower(b)",std.algorithm.SwapStrategy.stable)(dirs);
//std.algorithm.sort!("a < b",
std.algorithm.SwapStrategy.stable)(dirs);