On Monday, 30 May 2016 at 20:08:46 UTC, Andrei Alexandrescu wrote:
On 05/30/2016 04:00 PM, Chris wrote:
./benchmark.dmd
        std: 178 ±31    +36 (4475)  -29 (5344)
     manual: 167 ±46    +82 (2883)  -32 (7054)
       qznc: 114 ±7     +18 (1990)   -5 (7288)
      Chris: 228 ±49    +82 (3050)  -35 (6780)
     Andrei: 103 ±5     +47 ( 658)   -2 (9295)
(avg slowdown vs fastest; absolute deviation)
CPU ID: GenuineIntel Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz

LDC:

        std: 184 ±19    +28 (3420)  -14 (6523)
     manual: 205 ±59   +120 (2463)  -39 (7443)
       qznc: 151 ±25    +44 (2983)  -17 (6911)
      Chris: 194 ±57    +78 (3702)  -46 (6251)
     Andrei: 101 ±2     +42 ( 435)   -1 (9542)
  (avg slowdown vs fastest; absolute deviation)
CPU ID: GenuineIntel Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz

Thanks for looking into this! @qznc, could you please look into updating https://github.com/dlang/phobos/pull/4362 with this result? One possible tweak is see whether replacing the function call with inline code helps. Thanks! -- Andrei

What function call should be replaced with inline code?

Overall, I'm very confused and displeased by the benchmark right now. Initially, the problem was that a naive manual find was slower than std find in Phobos. Look at the LDC numbers–manual find is slower than std find. By tweaking the benchmark, the numbers can be shifted around arbitrarily. Even without tweaking, it is very processor dependent. Here are the numbers from my laptop:

./benchmark.ldc
       std: 149 ±24    +29 (4275)  -21 (5604)
    manual: 129 ±37    +90 (2055)  -23 (7917)
      qznc: 131 ±22    +26 (4381)  -20 (5488)
     Chris: 154 ±35    +81 (2192)  -22 (7672)
    Andrei: 118 ±28    +82 (1762)  -16 (8194)
 (avg slowdown vs fastest; absolute deviation)
CPU ID: GenuineIntel Intel(R) Core(TM) i7 CPU M 620 @ 2.67GHz

./benchmark.dmd
       std: 143 ±22    +26 (4219)  -19 (5602)
    manual: 158 ±31    +47 (3436)  -24 (6492)
      qznc: 101 ±2     +12 (1349)   -1 (7851)
     Chris: 216 ±38    +56 (3393)  -28 (6541)
    Andrei: 135 ±31    +48 (3326)  -24 (6589)
 (avg slowdown vs fastest; absolute deviation)
CPU ID: GenuineIntel Intel(R) Core(TM) i7 CPU M 620 @ 2.67GHz

And Desktop:

./benchmark.ldc
       std: 129 ±24    +40 (3121)  -17 (6767)
    manual: 129 ±31    +59 (2668)  -21 (7244)
      qznc: 112 ±14    +30 (2542)   -9 (7312)
     Chris: 134 ±33    +58 (2835)  -23 (7068)
    Andrei: 123 ±27    +53 (2679)  -18 (7225)
 (avg slowdown vs fastest; absolute deviation)
CPU ID: GenuineIntel Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz

./benchmark.dmd
       std: 157 ±31    +44 (3693)  -24 (6234)
    manual: 143 ±41    +73 (2854)  -28 (7091)
      qznc: 116 ±21    +35 (3092)  -14 (6844)
     Chris: 181 ±50    +74 (3452)  -38 (6510)
    Andrei: 136 ±38    +64 (2975)  -27 (6953)
 (avg slowdown vs fastest; absolute deviation)
CPU ID: GenuineIntel Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz

Reply via email to