You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Mar 9, 2019. It is now read-only.
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)
Throwing this one out there for folks that want to dive in.
In the bufq API we have
ph_bufq_consume_recordwhich 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.
memmemcall using thesse3_memchrfunction 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 timesse3_memchrthat can be made for detecting CRLF?