Comment #0 by moskou.moskou — 2016-12-28T15:25:11Z
when I want to sort int[2][], I noticed that if I use my comparator, I can sort more faster.
------------------------------------------
import std.stdio, std.array, std.datetime, std.random, std.algorithm;
void main() {
//make random array
int[2][] base = new int[2][1000000];
Random gen = Random(unpredictableSeed);
foreach (ref d; base) {
d[0] = uniform(0, 1_000_000_000, gen);
d[1] = uniform(0, 1_000_000_000, gen);
}
//1: simple
auto b = base.dup;
StopWatch sw;
writeln("START");
sw.start;
sort(b);
sw.stop;
writeln("END ", sw.peek.msecs, "ms (type 1)");
sw.reset;
//2: my comparator
auto c = base.dup;
writeln("START");
sw.start;
sort!((l, r){
foreach (i; 0..2) {
if (l[i] != r[i]) return l[i] < r[i];
}
return false;
})(c);
sw.stop;
writeln("END ", sw.peek.msecs, "ms (type 2)");
sw.reset;
assert(equal(b, c));
}
------------------------------------------
This code output
START
END 520ms (type 1)
START
END 330ms (type 2)
with dmd(v2.072.1) -O -release source.d
It seem slower about x1.5, is this a bug?
Comment #1 by robert.schadek — 2024-12-13T18:51:11Z