From ad5465d6ce5ea17606a731bd03230e500deb9103 Mon Sep 17 00:00:00 2001 From: Wunkolo Date: Fri, 24 Dec 2021 10:35:08 -0800 Subject: [PATCH] constant_pool: Use `tsl::robin_map` rather than `unordered_map` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Finding a much more drastic improvement with `robin_map`. `map`: ``` [master] % hyperfine -r 100 "./dynarmic_tests --durations yes" Benchmark 1: ./dynarmic_tests --durations yes Time (mean ± σ): 567.0 ms ± 6.9 ms [User: 513.1 ms, System: 53.2 ms] Range (min … max): 554.4 ms … 588.1 ms 100 runs ``` `unordered_map`: ``` [opt_const_pool] % hyperfine -r 100 "./dynarmic_tests --durations yes" Benchmark 1: ./dynarmic_tests --durations yes Time (mean ± σ): 561.1 ms ± 4.5 ms [User: 508.1 ms, System: 52.3 ms] Range (min … max): 552.6 ms … 574.2 ms 100 runs ``` `tsl::robin_map`: ``` [opt_const_pool] % hyperfine -r 100 "./dynarmic_tests --durations yes" Benchmark 1: ./dynarmic_tests --durations yes Time (mean ± σ): 553.5 ms ± 5.6 ms [User: 500.7 ms, System: 52.1 ms] Range (min … max): 545.7 ms … 569.3 ms 100 runs ``` --- src/dynarmic/backend/x64/constant_pool.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dynarmic/backend/x64/constant_pool.h b/src/dynarmic/backend/x64/constant_pool.h index c7d11df7..04243993 100644 --- a/src/dynarmic/backend/x64/constant_pool.h +++ b/src/dynarmic/backend/x64/constant_pool.h @@ -6,9 +6,9 @@ #pragma once #include -#include #include +#include #include #include "dynarmic/common/common_types.h" @@ -36,7 +36,7 @@ private: } }; - std::unordered_map, void*, ConstantHash> constant_info; + tsl::robin_map, void*, ConstantHash> constant_info; BlockOfCode& code; size_t pool_size;