It's weird, on my machine, my find function is consistently faster than `manual find`

LDC:

    std find: 137 ±22    +33 (3580)  -17 (6251)
 manual find: 137 ±32    +53 (3105)  -23 (6834)
   qznc find: 106 ±8     +17 (2608)   -5 (7195)
  Chris find: 132 ±32    +58 (2803)  -23 (7131)
 Andrei find: 120 ±26    +54 (2466)  -17 (7454)

===

    std find: 136 ±22    +33 (3503)  -17 (6304)
 manual find: 137 ±33    +55 (3000)  -23 (6920)
   qznc find: 106 ±8     +17 (2535)   -5 (7287)
  Chris find: 132 ±33    +59 (2803)  -23 (7137)
 Andrei find: 119 ±25    +51 (2569)  -16 (7374)


It's negligible, but I wonder is it the extra initialization:

`size_t end = haystack.length - needle.length + 1;`

and

`size_t i = 0` is defined, before we know, if it's a legitimate search. But that shouldn't matter, or should it?

Or does it depend on the machine?

DMD slows all searches down considerably (except for `qznc find`, well done!:)

DMD:

    std find: 161 ±36    +46 (4015)  -31 (5847)
 manual find: 147 ±40    +68 (3001)  -28 (6917)
   qznc find: 106 ±8     +15 (2623)   -5 (7172)
  Chris find: 201 ±41    +73 (2830)  -28 (7120)
 Andrei find: 150 ±40    +61 (3347)  -30 (6575)


PS I've corrected the end of the search string to

`outer:
    for (auto i = 0; i < haystack.length-(needle.length-1); i++)`

else it will not match at the end of a string.

Reply via email to