On Tuesday, 31 May 2016 at 21:29:34 UTC, Andrei Alexandrescu wrote:

You may want to then try https://dpaste.dzfl.pl/392710b765a9, which generates inline code on all compilers. -- Andrei

I've added it as `Andrei3`. It runs faster with dmd, but it's not as good with ldc. Seems like ldc performs some extra optimization when moving `computeSkip` into the loop, something it doesn't bother to do when it's already there.

dmd -O -release -inline -noboundscheck *.d -ofbenchmark.dmd
./benchmark.dmd
Search in Alice in Wonderland
       std: 190 ±4
    manual: 115 ±4
      qznc: 106 ±2
     Chris: 160 ±4
    Andrei: 159 ±4
   Andrei2: 108 ±2
   Andrei3: 100 ±0
Search in random short strings
       std: 222 ±27
    manual: 193 ±49
      qznc: 120 ±12
     Chris: 224 ±57
    Andrei: 114 ±9
   Andrei2: 106 ±5
   Andrei3: 102 ±3
Mismatch in random long strings
       std: 186 ±28
    manual: 206 ±85
      qznc: 118 ±14
     Chris: 265 ±104
    Andrei: 194 ±85
   Andrei2: 116 ±18
   Andrei3: 102 ±4
Search random haystack with random needle
       std: 189 ±38
    manual: 171 ±45
      qznc: 118 ±11
     Chris: 225 ±52
    Andrei: 149 ±32
   Andrei2: 110 ±7
   Andrei3: 103 ±6
 (avg slowdown vs fastest; absolute deviation)
CPU ID: GenuineIntel Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz

./benchmark.ldc
Search in Alice in Wonderland
       std: 170 ±1
    manual: 143 ±2
      qznc: 133 ±1
     Chris: 144 ±1
    Andrei: 196 ±10
   Andrei2: 100 ±0
   Andrei3: 111 ±1
Search in random short strings
       std: 223 ±30
    manual: 211 ±51
      qznc: 124 ±12
     Chris: 223 ±61
    Andrei: 115 ±10
   Andrei2: 102 ±3
   Andrei3: 105 ±4
Mismatch in random long strings
       std: 181 ±17
    manual: 253 ±109
      qznc: 146 ±24
     Chris: 248 ±108
    Andrei: 228 ±96
   Andrei2: 101 ±2
   Andrei3: 108 ±6
Search random haystack with random needle
       std: 187 ±22
    manual: 208 ±60
      qznc: 152 ±27
     Chris: 202 ±58
    Andrei: 173 ±35
   Andrei2: 102 ±4
   Andrei3: 110 ±8
 (avg slowdown vs fastest; absolute deviation)
CPU ID: GenuineIntel Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz

Reply via email to