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
The hash-table uses a metadata table inspired by swisstable, so we should be able to benefit from SIMD probing. The difficulty is that atomic group loads must be aligned, causing us to lose some hash entropy. I ran some benchmarks previously and found a small regression from essentially copy-pasting the x86 SIMD implementation from hashbrown, so maybe there's not really much we can do here.
There's also questions about whether mixed-sized atomic accesses are sound on x86, but we should at least be able to benefit on other platforms.
The text was updated successfully, but these errors were encountered:
Alternatively, if we decide not to use SIMD we might want to consider alternative probing strategy. The current quadratic by-group probing makes less sense if groups are not correlated with SIMD groups.
9b8add8 switches to pure quadratic probing. Read performance seems to be consistently lower, especially on large tables. However, I'm noticing some unexpected performance fluctuations when adjusting the load factor, so I'd be interested in more robust benchmarks and an analysis of probe lengths. We're in a somewhat unique situation of having a metadata table but not using SIMD (even at the machine word level).
The hash-table uses a metadata table inspired by swisstable, so we should be able to benefit from SIMD probing. The difficulty is that atomic group loads must be aligned, causing us to lose some hash entropy. I ran some benchmarks previously and found a small regression from essentially copy-pasting the x86 SIMD implementation from
hashbrown
, so maybe there's not really much we can do here.There's also questions about whether mixed-sized atomic accesses are sound on x86, but we should at least be able to benefit on other platforms.
The text was updated successfully, but these errors were encountered: