I’m curious as to how the hashbrown crate can have up to 2x performance on certain operations, even though it looks like the standard library’s HashMap is just a wrapper for hashbrown.

I understand that a wrapper could add a small overhead, but 50% of the original performance is a bit silly, especially considering all of the functions in the wrapper are #[inline], so there should be no overhead in calling most functions.

Does anyone know the reason for this?

hashbrown uses aHash by default, which is much faster than std’s SipHash-1-3

Anh Kagi
link
fedilink
71Y

I suppose it’s because the article you’re citing is from april 22nd, and that hashbrown has replaced old std hashmap in this commit, which hash been created on 24th.

I suppose (can’t test myself) that if you do the test now (hashbrown against std), the performance difference would be negligeable beacuse you would be testing roughly the same algorithms.

Stdlib uses SipHash, not HashBrown.

Rust Programming
!rust@lemmy.ml
    • 0 users online
    • 2 users / day
    • 2 users / week
    • 2 users / month
    • 74 users / 6 months
    • 1 subscriber
    • 258 Posts
    • 707 Comments
    • Modlog