Bug 17039 – int[2][]'s sort are slow with default comparator

Status
NEW
Severity
enhancement
Priority
P4
Component
dmd
Product
D
Version
D2
Platform
x86_64
OS
Mac OS X
Creation time
2016-12-28T15:25:11Z
Last change time
2024-12-13T18:51:11Z
Assigned to
No Owner
Creator
Kohei Morita
Moved to GitHub: dmd#19221 →

Comments

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
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