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?
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/19221 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB