Fields
| hardware | None |
| os | None |
Parameters
Fields
| Name | Value |
|---|
Parameters
| Name | Value |
|---|---|
| git_commit |
commit 4c5877dbc2127e4948b9ef9a8c0beb4dd4b1fcf0 Author: Nikolas Klauser <nikolasklauser@berlin.de> Date: Fri Aug 29 18:48:11 2025 +0200 [libc++] Optimize map::insert_or_assign (#155816) `__emplace_unique` uses `__find_equal`, which can be significantly faster than `lower_bound`. As a nice side-effect, this also changes the implementation to the "naive" implementation of trying `insert` first, and if that fails assign instead. This also matches the `insert_or_assign` overloads with a hint. ``` Zen 2: -------------------------------------------------------------------------------------------------------- Benchmark old new -------------------------------------------------------------------------------------------------------- std::map<int, int>::insert_or_assign(key, value) (already present)/0 1.62 ns 1.53 ns std::map<int, int>::insert_or_assign(key, value) (already present)/32 5.78 ns 5.99 ns std::map<int, int>::insert_or_assign(key, value) (already present)/1024 21.5 ns 15.4 ns std::map<int, int>::insert_or_assign(key, value) (already present)/8192 26.2 ns 20.5 ns std::map<int, int>::insert_or_assign(key, value) (new value)/0 22.5 ns 21.1 ns std::map<int, int>::insert_or_assign(key, value) (new value)/32 42.9 ns 28.4 ns std::map<int, int>::insert_or_assign(key, value) (new value)/1024 118 ns 92.0 ns std::map<int, int>::insert_or_assign(key, value) (new value)/8192 227 ns 173 ns std::map<std::string, int>::insert_or_assign(key, value) (already present)/0 13.2 ns 18.9 ns std::map<std::string, int>::insert_or_assign(key, value) (already present)/32 65.6 ns 39.0 ns std::map<std::string, int>::insert_or_assign(key, value) (already present)/1024 127 ns 64.4 ns std::map<std::string, int>::insert_or_assign(key, value) (already present)/8192 134 ns 71.4 ns std::map<std::string, int>::insert_or_assign(key, value) (new value)/0 45.6 ns 37.3 ns std::map<std::string, int>::insert_or_assign(key, value) (new value)/32 142 ns 93.3 ns std::map<std::string, int>::insert_or_assign(key, value) (new value)/1024 288 ns 147 ns std::map<std::string, int>::insert_or_assign(key, value) (new value)/8192 368 ns 182 ns Apple M4: -------------------------------------------------------------------------------------------------------- Benchmark old new -------------------------------------------------------------------------------------------------------- std::map<int, int>::insert_or_assign(key, value) (already present)/0 0.784 ns 0.740 ns std::map<int, int>::insert_or_assign(key, value) (already present)/32 2.52 ns 1.77 ns std::map<int, int>::insert_or_assign(key, value) (already present)/1024 8.72 ns 4.06 ns std::map<int, int>::insert_or_assign(key, value) (already present)/8192 10.6 ns 3.98 ns std::map<int, int>::insert_or_assign(key, value) (new value)/0 17.3 ns 17.2 ns std::map<int, int>::insert_or_assign(key, value) (new value)/32 22.5 ns 19.3 ns std::map<int, int>::insert_or_assign(key, value) (new value)/1024 56.8 ns 33.5 ns std::map<int, int>::insert_or_assign(key, value) (new value)/8192 88.2 ns 41.0 ns std::map<std::string, int>::insert_or_assign(key, value) (already present)/0 16.6 ns 11.8 ns std::map<std::string, int>::insert_or_assign(key, value) (already present)/32 13.7 ns 30.7 ns std::map<std::string, int>::insert_or_assign(key, value) (already present)/1024 46.7 ns 49.1 ns std::map<std::string, int>::insert_or_assign(key, value) (already present)/8192 41.9 ns 76.9 ns std::map<std::string, int>::insert_or_assign(key, value) (new value)/0 40.0 ns 40.5 ns std::map<std::string, int>::insert_or_assign(key, value) (new value)/32 38.9 ns 40.0 ns std::map<std::string, int>::insert_or_assign(key, value) (new value)/1024 84.9 ns 96.9 ns std::map<std::string, int>::insert_or_assign(key, value) (new value)/8192 166 ns 149 ns ``` |
Filter
ldionne-old-macbook-results test results
| Run | Order | Start Time | Duration |
|---|---|---|---|
| Current | 550580 | 2025-12-16T16:40:01 | 0:00:00 |
| Previous | 550572 | 2025-12-16T16:40:01 | 0:00:00 |
| Baseline | 485288 | 2025-12-16T16:40:01 | 0:00:00 |
Tests Summary
| Status Group | # | # (B) |
|---|---|---|
| Performance Improvements | 4 | 0 |
| Added Tests | 1 | 17 |
| Unchanged Tests | 80 | 68 |
| Total Tests | 85 |
| Performance Improvements - execution_time | Δ | Previous | Current | σ | Δ (B) | σ (B) |
|---|---|---|---|---|---|---|
| 737_gmsh_r | -4.92% | 13.273 | 12.620 | 0.253 | 0.00% | 0.253 |
| 707_ntest_r | -2.02% | 18.391 | 18.019 | 0.098 | 0.00% | 0.098 |
| 748_flightdm_r | -1.83% | 9.085 | 8.919 | 0.048 | 0.00% | 0.048 |
| 709_cactus_r | -1.62% | 20.025 | 19.701 | 0.072 | 0.00% | 0.072 |
| Added Tests - execution_time |
|---|
| 735_gem5_r |
| Added Tests - execution_time |
|---|
| 706_stockfish_r |
| 707_ntest_r |
| 709_cactus_r |
| 710_omnetpp_r |
| 721_gcc_r |
| 723_llvm_r |
| 727_cppcheck_r |
| 729_abc_r |
| 731_astcenc_r |
| 734_vpr_r |
| 735_gem5_r |
| 736_ocio_r |
| 737_gmsh_r |
| 748_flightdm_r |
| 750_sealcrypto_r |
| 753_ns3_r |
| 766_femflow_r |
Report Time: 0.09s