Rendered at 05:50:57 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
jll29 4 hours ago [-]
google::dense_hash_map is faster than this new implementation according to their benchmark's diagram (google::dense_hash_map has the lowest runtime of all tested methods).
teo_zero 2 hours ago [-]
The concept is very similar to robin hood. In fact most of the performance charts show that the curves of hopscotch and robin hood are very close. I think I'd prefer robin hood as it's well known.
mgaunard 8 hours ago [-]
How does it compare to boost unordered flat map?
Looks like the benchmarks were last updated in 2019.
However, it lacks the newer Boost stuff which is very fast.
The Hopscotch map was interesting at the time but due to unfortunate timing was immediately outshone by absl::unordered_flat_map A.K.A. "Swiss tables", and there's been even more water under the bridge since then.
RossBencina 6 hours ago [-]
Abseil Swiss Tables carefully avoids intermediate allocations/copy constructor calls.[1] I'd be wary about inferring underlying algorithm performance from benchmarks that don't explicitly control for these optimisations. (Or maybe everyone is using them and I'm out of touch.)
Algorithmically hopscotch has a better strict worst case whereas swiss tables have a degenerate O(N) lookup. But there are a lot of maps like that. robin_hood::flat_hash_map is very fast but I can create insert sequences under which it will call std::abort, which I feel is ridiculous. But if your hash map isn't exposed to hostile inputs then you might not be concerned.
utopcell 46 minutes ago [-]
You probably mean absl::flat_hash_map<>.
quadrature 6 hours ago [-]
Is there something better than Swiss tables ?.
reinitctxoffset 6 hours ago [-]
On modern super wide znver5 or SBSA with full-clock scalar 256 or 512 ALUs / SIMD lanes deep pipelines hight BTB pressure eyc. it's just really difficult to make a priori statements about performance for a given workload.
absl::flat_hash_map (or folly::F14) are great defaults if you can eat the invalidation semantics.
But if it's really hot you measure by workload and have infrastructure to flag the right ones in.
This seems promising. I'll start benching it alongside the other likely lads.
szmarczak 6 hours ago [-]
No. Fundamentally it's not possible to be faster.
infamouscow 6 hours ago [-]
This is not true. It is fast as a general purpose hash table, but claiming it's the fastest across all datasets and workloads is silly.
Looks like the benchmarks were last updated in 2019.
Has some older benchmarks, including those two.
However, it lacks the newer Boost stuff which is very fast.
The Hopscotch map was interesting at the time but due to unfortunate timing was immediately outshone by absl::unordered_flat_map A.K.A. "Swiss tables", and there's been even more water under the bridge since then.
[1] https://abseil.io/about/design/swisstables
absl::flat_hash_map (or folly::F14) are great defaults if you can eat the invalidation semantics.
But if it's really hot you measure by workload and have infrastructure to flag the right ones in.
This seems promising. I'll start benching it alongside the other likely lads.