hashbrown is the same hashmap used by the std library. however the std library uses some safer defaults (denial-of-service resistant hashing) and is a few versions behind.
these differences may lead to performance loss when not required.
using hashbrown in BNF improved all benchmarks on my local machine by 2-25%.
for this reason, it seems worth BNF adopting hashbrown as its default hasher.
the denial-of-service resistance is not required for BNF's use cases
coverage: 98.05% (+0.09%) from 97.956%
when pulling 9d81ff056e4cf89cc12d691b60b78f4916f986c9 on hashbrown
into f2da5f3e023cdecadff56f81cf4c07e8ae6ac92f on main.
hashbrown is the same hashmap used by the std library. however the std library uses some safer defaults (denial-of-service resistant hashing) and is a few versions behind.
these differences may lead to performance loss when not required.
using hashbrown in BNF improved all benchmarks on my local machine by 2-25%.
for this reason, it seems worth BNF adopting hashbrown as its default hasher.
the denial-of-service resistance is not required for BNF's use cases