feat: Reduce HashTable load factor from 0.875 to 0.7 #13694
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.
Summary:
Load factor of 7/8 is too high. When table is 7/8 full a significant performance
degradation is observed. Highly selective use cases (when value is not
present in the hash table) are impacted the most.
According to the simulation when table is 7/8 full a single probe operation has
to visit 2.88 buckets on average.
When double hashing algorithm is used the average number of bucket to visit is
reduced to 1.88 with the idential load.
The optimal load factor seems to be at 0.7. Past that point performance starts
to deteriorate fast. Performance deteriorates much faster for linear probing
algorithm.
Differential Revision: D76267085