faster splitter
Chris via Digitalmars-d
digitalmars-d at puremagic.com
Mon May 30 13:00:03 PDT 2016
On Monday, 30 May 2016 at 18:57:15 UTC, Chris wrote:
> On Monday, 30 May 2016 at 18:20:39 UTC, Andrei Alexandrescu
> wrote:
>>
>> Please throw this hat into the ring as well: it should improve
>> average search on large vocabulary dramatically.
>>
>> https://dpaste.dzfl.pl/dc8dc6e1eb53
>>
>> It uses a BM-inspired trick - once the last characters
>> matched, if the match subsequently fails it needn't start from
>> the next character in the haystack. The "skip" is computed
>> lazily and in a separate function so as to keep the loop
>> tight. All in all a routine worth a look. I wanted to write
>> this for a long time. -- Andrei
>
> Cool. So far, my experience with separate functions has been
> that they slow down the loop. But this might do the trick.
Congratulations!
DMD:
./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
More information about the Digitalmars-d
mailing list