Improve performance when parsing integers. #124
Merged
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.
This uses the unchecked loop enhancements from rust core while also adding in our own, multi-digit enhancements and being able to use the best to highly tune performance. The optimizations for multi-digit optimizations can be configured, and it also uses some optimizations such as unchecked mul-add for the first <=N (rough overflow digit estimation) digits and only checked mul-add for the rest.
For large strings, such as 64-bit and larger integers with 10+ characters, multi-digit optimizations can improve performance by 70%. But for small, simple strings it can lead to a 5-20% performance penalty. This behavior can be toggled on and off for optimal behavior.
This PR also reduces binary sizes when the compact feature is enabled.