This repository was archived by the owner on Mar 9, 2019. It is now read-only.

Description
Throwing this one out there for folks that want to dive in.
In the bufq API we have ph_bufq_consume_record which searches the bufq for a matching record delimiter.
For many internet protocols this delimiter is CRLF. For many other applications, we're likely to be looking for LF.
There are a couple of optimizations that could be investigated.
- Can we accelerate the
memmem call using the sse3_memchr function from here? http://repnop.org/carte/snippets/simd/. The performance.data file indicates that this performs consistently better than the darwin libc. To adopt this, we'd need to detect sse3 either at runtime or compile time
- are there specializations of
sse3_memchr that can be made for detecting CRLF?
- are there specializations of string matching algorithms with a constant, known needle that we could use?
- is there a more efficient way to match needles across the "straddle" point in cases where the delimiter straddles discontiguous memory regions?
- for long records, we make repeated calls and search across the same memory regions repeatedly. We can surely cache the last searched offset and improve efficiency. We'd need to make sure that we invalidate this offset in the appropriate circumstances (mostly when we've consumed past that point)