Search papers, labs, and topics across Lattice.
The paper introduces `static_maps`, new `std::map` and `std::unordered_map` implementations leveraging C++23's `consteval` for compile-time key evaluation. These implementations achieve significant performance improvements compared to standard library counterparts and the Frozen perfect hashing library when keys are known at compile time. Benchmarks across several use-cases demonstrate runtime reductions of up to 65% compared to `std::unordered_map` and up to 55% compared to Frozen.
C++23's `consteval` unlocks drop-in replacements for `std::map` and `std::unordered_map` that are up to 2.5x faster when keys are known at compile time.
Using consteval from C++23, we implement efficient, new versions of std::map and std::unordered_map for use when the keys are known at compile time. We demonstrate superior performance of our unordered_map on three demonstration use-cases: Lookup of elemental mass from atomic symbol, lookup of amino acid from codon, and modification of stock prices from S&P 500 ticker symbols all produced runtimes<40%,<35%,<73% of the respective runtimes of the std implementations. Our library runimes were<80%,<45%,<97% of the lookup time of Frozen, an alternative perfect hashing implementation in C++ for problems also using constexpr keys. To our knowledge, this makes our library the overall fastest drop-in (i.e., with a similar API) alternative to std::unordered_map. On one arbitrarily chosen demo, we demonstrate runtimes<35% of PTHash and<89% gperf, state-of-the-art but not drop-in hashing libraries via external tools.