faster splitter
qznc via Digitalmars-d
digitalmars-d at puremagic.com
Tue May 31 12:59:50 PDT 2016
On Tuesday, 31 May 2016 at 19:29:25 UTC, Chris wrote:
> Would it speed things up even more, if we put the function
> `computeSkip` into the loop or is this done automatically by
> the compiler?
LDC inlines it. DMD does not.
More numbers:
./benchmark.ldc
Search in Alice in Wonderland
std: 147 ±1
manual: 100 ±0
qznc: 121 ±1
Chris: 103 ±1
Andrei: 144 ±1
Andrei2: 105 ±1
Search in random short strings
std: 125 ±15
manual: 117 ±10
qznc: 104 ±6
Chris: 123 ±14
Andrei: 104 ±5
Andrei2: 103 ±4
Mismatch in random long strings
std: 140 ±22
manual: 164 ±64
qznc: 115 ±13
Chris: 167 ±63
Andrei: 161 ±68
Andrei2: 106 ±9
Search random haystack with random needle
std: 138 ±27
manual: 135 ±33
qznc: 116 ±16
Chris: 141 ±36
Andrei: 131 ±33
Andrei2: 109 ±12
(avg slowdown vs fastest; absolute deviation)
CPU ID: GenuineIntel Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
Random short strings has haystacks of 10 to 300 characters and
needles of 2 to 10. Basically, no time for initialisation.
Random long strings has haystacks of size 1000, 10_000, 100_000,
or 1_000_000 and needles 50 to 500. It inserts a character into a
random index of the needle to force a mismatch.
The last one is the configuration as before.
Overall, Andrei2 (the lazy compute skip) is really impressive. :)
More information about the Digitalmars-d
mailing list