Comment by sylware
Dude, I cannot be more explicit than that.
That said, when you work on such code, use assembly, C code is for reference (have a look at dav1d av1 decoder).
Dude, I cannot be more explicit than that.
That said, when you work on such code, use assembly, C code is for reference (have a look at dav1d av1 decoder).
I can't either.
Having implemented this, I'll claim that this is already competitive for needles as small as 2 bytes, and if the needle doesn't show up in the first couple “vector sizes” of the haystack.
Also, look at burntsushi's comment. They use this algorithm for similarly small sizes. They do use Rabin-Karp for “supremely short haystacks” (just because that lib is awesome and uses every trick in the book), but that wording should give you an idea of how small the threshold will be.
And really, how common are “supremely small” haystacks?