boost concurrent_flat_map performance
How is boost::concurrent_flat_map comparing to an std::unordered_map protected by an readers-writers lock:
- x86_64:
- write: concurrent map wins
- read: unordered map wins by a large margin (!). Caveat emptor if the code is read-intensive.
- ARM:
- write: concurrent map wins by a large margin
- read: concurrent map wins
YMMV with different key or node types, compilers, CPU, boost implementation, etc.
x86_64 4x Intel(R) Pentium(R) Gold G5420 CPU @ 3.80GHz :
--------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations Rate
--------------------------------------------------------------------------------------------------
BM_unordered_map_setup/real_time/threads:1 4210882327 ns 4209667959 ns 1 7.9685M/s
BM_unordered_map_setup/real_time/threads:2 825552049 ns 1639408470 ns 2 20.3224M/s
BM_unordered_map_setup/real_time/threads:4 2528831688 ns 7204019621 ns 4 3.31719M/s
BM_unordered_map_setup/real_time/threads:8 1592650965 ns 4956882616 ns 8 2.63354M/s
BM_unordered_map_setup/real_time/threads:16 823477319 ns 2550017734 ns 16 2.5467M/s
BM_unordered_map_setup/real_time/threads:32 388500283 ns 1222031068 ns 32 2.69904M/s
BM_unordered_map_setup/real_time/threads:64 204282706 ns 640233391 ns 64 2.56648M/s
BM_unordered_map_setup/real_time/threads:128 104458936 ns 339726029 ns 128 2.50954M/s
---------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
---------------------------------------------------------------------------------------
BM_unordered_map_setup/real_time/threads:1_BigO 1334829534.16 (1) 2845248361.07 (1)
BM_unordered_map_setup/real_time/threads:1_RMS 99 % 79 %
--------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations Rate
--------------------------------------------------------------------------------------------------
BM_boost_map_setup/real_time/threads:1 7540980948 ns 7530113262 ns 1 4.44961M/s
BM_boost_map_setup/real_time/threads:2 1800220571 ns 3598579609 ns 2 9.31953M/s
BM_boost_map_setup/real_time/threads:4 697501682 ns 2232794262 ns 4 12.0266M/s
BM_boost_map_setup/real_time/threads:8 362610840 ns 1178238608 ns 8 11.567M/s
BM_boost_map_setup/real_time/threads:16 177621563 ns 591342902 ns 16 11.8069M/s
BM_boost_map_setup/real_time/threads:32 78495805 ns 289551131 ns 32 13.3584M/s
BM_boost_map_setup/real_time/threads:64 39722562 ns 146635486 ns 64 13.1987M/s
BM_boost_map_setup/real_time/threads:128 20347811 ns 71274757 ns 128 12.8832M/s
---------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
---------------------------------------------------------------------------------------
BM_boost_map_setup/real_time/threads:1_BigO 1339687722.83 (1) 1954816252.04 (1)
BM_boost_map_setup/real_time/threads:1_RMS 180 % 123 %
--------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations Rate
--------------------------------------------------------------------------------------------------
BM_unordered_map_read/real_time/threads:1 745030667 ns 745001351 ns 1 45.0377M/s
BM_unordered_map_read/real_time/threads:2 507194397 ns 1013277556 ns 2 33.0785M/s
BM_unordered_map_read/real_time/threads:4 271916982 ns 885814071 ns 4 30.8499M/s
BM_unordered_map_read/real_time/threads:8 129150421 ns 476561056 ns 8 32.4761M/s
BM_unordered_map_read/real_time/threads:16 65858855 ns 268280091 ns 16 31.8431M/s
BM_unordered_map_read/real_time/threads:32 36245630 ns 134242022 ns 32 28.9297M/s
BM_unordered_map_read/real_time/threads:64 18075367 ns 66743245 ns 64 29.0057M/s
BM_unordered_map_read/real_time/threads:128 7862877 ns 31826218 ns 128 33.3395M/s
---------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
---------------------------------------------------------------------------------------
BM_unordered_map_read/real_time/threads:1_BigO 222666899.35 (1) 452718201.40 (1)
BM_unordered_map_read/real_time/threads:1_RMS 114 % 80 %
--------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations Rate
--------------------------------------------------------------------------------------------------
BM_boost_map_read/real_time/threads:1 4937134249 ns 4932412461 ns 1 6.79634M/s
BM_boost_map_read/real_time/threads:2 1673075567 ns 3336223630 ns 2 10.0278M/s
BM_boost_map_read/real_time/threads:4 677673494 ns 2147316299 ns 4 12.3785M/s
BM_boost_map_read/real_time/threads:8 345794497 ns 1147834124 ns 8 12.1295M/s
BM_boost_map_read/real_time/threads:16 167613224 ns 557313324 ns 16 12.5119M/s
BM_boost_map_read/real_time/threads:32 75484537 ns 275597519 ns 32 13.8913M/s
BM_boost_map_read/real_time/threads:64 37624814 ns 137142448 ns 64 13.9346M/s
BM_boost_map_read/real_time/threads:128 17251726 ns 69653722 ns 128 15.1952M/s
---------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
---------------------------------------------------------------------------------------
BM_boost_map_read/real_time/threads:1_BigO 991456513.60 (1) 1575436690.86 (1)
BM_boost_map_read/real_time/threads:1_RMS 159 % 105 %
ARM 4x Cortex A76 2400 MHz CPU :
--------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations Rate
--------------------------------------------------------------------------------------------------
BM_unordered_map_setup/real_time/threads:1 3016725374 ns 3016053728 ns 1 11.1228M/s
BM_unordered_map_setup/real_time/threads:2 3331414384 ns 6660887573 ns 2 5.03606M/s
BM_unordered_map_setup/real_time/threads:4 2207351983 ns 8397177562 ns 4 3.8003M/s
BM_unordered_map_setup/real_time/threads:8 2.3313e+10 ns 9.3350e+10 ns 8 179.915k/s
BM_unordered_map_setup/real_time/threads:16 1172653256 ns 4952684355 ns 16 1.78838M/s
BM_unordered_map_setup/real_time/threads:32 412033782 ns 1749867694 ns 32 2.54488M/s
BM_unordered_map_setup/real_time/threads:64 198917892 ns 825415138 ns 64 2.6357M/s
BM_unordered_map_setup/real_time/threads:128 93692304 ns 387746362 ns 128 2.79792M/s
---------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
---------------------------------------------------------------------------------------
BM_unordered_map_setup/real_time/threads:1_BigO 4218181081.39 (1) 14917436204.58 (1)
BM_unordered_map_setup/real_time/threads:1_RMS 173 % 200 %
--------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations Rate
--------------------------------------------------------------------------------------------------
BM_boost_map_setup/real_time/threads:1 8215009115 ns 8212398595 ns 1 4.08453M/s
BM_boost_map_setup/real_time/threads:2 1383581734 ns 2766612314 ns 2 12.1259M/s
BM_boost_map_setup/real_time/threads:4 516728879 ns 2059447591 ns 4 16.2341M/s
BM_boost_map_setup/real_time/threads:8 254041548 ns 1028370931 ns 8 16.5103M/s
BM_boost_map_setup/real_time/threads:16 123716605 ns 506971531 ns 16 16.9513M/s
BM_boost_map_setup/real_time/threads:32 62617175 ns 258362564 ns 32 16.7458M/s
BM_boost_map_setup/real_time/threads:64 30407326 ns 130021141 ns 64 17.2422M/s
BM_boost_map_setup/real_time/threads:128 15135653 ns 64880152 ns 128 17.3196M/s
---------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
---------------------------------------------------------------------------------------
BM_boost_map_setup/real_time/threads:1_BigO 1325154754.32 (1) 1878383102.48 (1)
BM_boost_map_setup/real_time/threads:1_RMS 199 % 136 %
--------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations Rate
--------------------------------------------------------------------------------------------------
BM_unordered_map_read/real_time/threads:1 878100440 ns 877989684 ns 1 38.2125M/s
BM_unordered_map_read/real_time/threads:2 2212028469 ns 4423624232 ns 2 7.58454M/s
BM_unordered_map_read/real_time/threads:4 847765090 ns 3390704983 ns 4 9.89497M/s
BM_unordered_map_read/real_time/threads:8 416020982 ns 1803581469 ns 8 10.082M/s
BM_unordered_map_read/real_time/threads:16 207071801 ns 908432746 ns 16 10.1277M/s
BM_unordered_map_read/real_time/threads:32 100599834 ns 454360486 ns 32 10.4232M/s
BM_unordered_map_read/real_time/threads:64 49871475 ns 227464144 ns 64 10.5128M/s
BM_unordered_map_read/real_time/threads:128 25559839 ns 113760770 ns 128 10.2561M/s
---------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
---------------------------------------------------------------------------------------
BM_unordered_map_read/real_time/threads:1_BigO 592127241.32 (1) 1524989814.36 (1)
BM_unordered_map_read/real_time/threads:1_RMS 117 % 97 %
--------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations Rate
--------------------------------------------------------------------------------------------------
BM_boost_map_read/real_time/threads:1 3854316256 ns 3853760170 ns 1 8.70568M/s
BM_boost_map_read/real_time/threads:2 1182144873 ns 2364018241 ns 2 14.1922M/s
BM_boost_map_read/real_time/threads:4 496086575 ns 1970994047 ns 4 16.9096M/s
BM_boost_map_read/real_time/threads:8 237631380 ns 980484098 ns 8 17.6505M/s
BM_boost_map_read/real_time/threads:16 120908670 ns 501530557 ns 16 17.3449M/s
BM_boost_map_read/real_time/threads:32 59436706 ns 251884015 ns 32 17.6419M/s
BM_boost_map_read/real_time/threads:64 29251954 ns 126946313 ns 64 17.9232M/s
BM_boost_map_read/real_time/threads:128 14585072 ns 63824195 ns 128 17.9734M/s
---------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
---------------------------------------------------------------------------------------
BM_boost_map_read/real_time/threads:1_BigO 749295185.89 (1) 1264180204.67 (1)
BM_boost_map_read/real_time/threads:1_RMS 164 % 100 %
Written on September 9, 2025