Conversation
This adds a cache for ascii string dict keys for the JSON decoder only. Since most JSON objects are structured (with repeated keys), this helps improve performance by reusing the same string key objects multiple times. This slightly reduces performance for cases where string keys don't repeat (cache is overhead only), but can result in up to 40% speedup in cases where the cache is hit. Using a cached string: - Removes the cost of string validation and allocation - Reduces memory usage by reusing objects - Removes the need for a siphash24 call, since string hashes are cached on the string object itself. The cache is cleared currently every 10 major GC passes to periodically free up old pages and reduce fragmentation.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 adds a cache for ascii string dict keys for the JSON decoder only.
Since most JSON objects are structured (with repeated keys), this helps
improve performance by reusing the same string key objects multiple
times. This slightly reduces performance for cases where string keys
don't repeat (cache is overhead only), but can result in up to 40%
speedup in cases where the cache is hit. Using a cached string:
on the string object itself.
The cache is cleared currently every 10 major GC passes to periodically
free up old pages and reduce fragmentation.