ENH: Change parsing logic to bytes manipulation directly #51
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Speed up parsing by removing bitstring reads
Avoid bitstring and do the bitwise reading and manipulations ourselves with bitwise logic. This greatly increases the performance of the parser by ~3-5x in the read routine. This is sort of the MVP for speed-ups by just implementing the routines we need and trying to replicate bitstring. We could do better by refactoring the
_get_format_string()
logic and avoiding any string matching/parsing/splitting too.I did not fully remove bitstring at this point since there is a lot of logic surrounding it in
parser.py
. We could make it an optional dependency, but it would be nice to get rid of thelegacy_parse_packet()
method if we go that route. Happy to add that deprecation path here if it'd be useful, but probably a major version bump then.Profiling
main
this branch
Checklist