Skip to content

Instantly share code, notes, and snippets.

View pavel-odintsov's full-sized avatar
🛡️
On mission to deliver affordable DDoS protection

Pavel Odintsov pavel-odintsov

🛡️
On mission to deliver affordable DDoS protection
View GitHub Profile
@pavel-odintsov
pavel-odintsov / gist:ab5a6ccaca9bf60cd21d7454c8e383aa
Created July 1, 2022 18:22
AMD Ryzen 5 3600 6-Core Processor test with Absl flat_hash_map and node_hash_map
Loaded 183978 IPs into memory
std::map big endian
Total lookup time is 59 seconds
Million of lookup ops per second: 3.11381
Total scan time is 15 seconds
Million of full scan ops per second: 8.43543
Accumulator value to guarantee no optimisation tricks from compiler: 183978000000
std::map little endian
@pavel-odintsov
pavel-odintsov / gist:d63ddddce89f5a5750076d45bd23eee0
Created July 1, 2022 18:04
Small key real traffic performance
Loaded 183978 IPs into memory
std::map big endian
Total lookup time is 28 seconds
Million of lookup ops per second: 6.46384
Total scan time is 3 seconds
Million of full scan ops per second: 49.8883
Accumulator value to guarantee no optimisation tricks from compiler: 183978000000
std::map little endian
@pavel-odintsov
pavel-odintsov / gist:31f2b393f45d10445283dfd6459a35e3
Created July 1, 2022 17:47
Absl vs Boost 1.80 vs std::unordered_map
Loaded 183978 IPs into memory
AMD Ryzen 5 3600 6-Core Processor
std::map big endian
Total lookup time is 58 seconds
Million of lookup ops per second: 3.12534
Total scan time is 16 seconds
Million of full scan ops per second: 8.33437
Accumulator value to guarantee no optimisation tricks from compiler: 183978000000
@pavel-odintsov
pavel-odintsov / gist:dcf6569f2ad9619e4d83aeae52311f1d
Created July 1, 2022 15:19
Ryzen 7 5800X with number of buckets boost::unordered
Loaded 183978 IPs into memory
std::map big endian
Total lookup time is 31 seconds
Million of lookup ops per second: 5.85925
Total scan time is 3 seconds
Million of full scan ops per second: 40.3343
Accumulator value to guarantee no optimisation tricks from compiler: 183978000000
std::map little endian
@pavel-odintsov
pavel-odintsov / gist:5fc97731b63aee8c4f7927507c94c003
Created July 1, 2022 15:02
Performance tests for Boost on Ryzen 7 5800X
Loaded 183978 IPs into memory
std::map big endian
Total lookup time is 31 seconds
Million of lookup ops per second: 5.81285
Total scan time is 4 seconds
Million of full scan ops per second: 38.8132
Accumulator value to guarantee no optimisation tricks from compiler: 183978000000
std::map little endian
@pavel-odintsov
pavel-odintsov / compare.txt
Last active June 30, 2022 12:58
Boost 1.79 vs Boost 1.80 little endian and big endian
1.78:
Loaded 183978 IPs into memory
std::map big endian
Total time is 60 seconds total ops: 183978000
Million of ops per second: 3.09965
std::map little endian
Total time is 58 seconds total ops: 183978000
@pavel-odintsov
pavel-odintsov / performance.patch
Created June 29, 2022 18:26
Boost 1.78 vs 1.80 diff
--- 78 2022-06-29 19:25:43.444689862 +0100
+++ 80 2022-06-29 19:25:46.944734452 +0100
@@ -1,49 +1,50 @@
Element size: 248 bytes
Total structure size: 2365 Mbytes
-std::map: 5.1 mega ops per second
-std::map big endian keys full scan: 17.3 mega ops per second
-std::map big endian keys: 1.4 mega ops per second
CPU: AMD Ryzen 5 3600 6-Core Processor
Boost 1.78
Element size: 248 bytes
Total structure size: 2365 Mbytes
std::map: 5.1 mega ops per second
std::map big endian keys full scan: 17.3 mega ops per second
@pavel-odintsov
pavel-odintsov / gist:6e996075809e6a0362459e5ba583519b
Created June 29, 2022 13:48
Boost 1.79 traffic structures on Ryzen 7 5800X
Element size: 248 bytes
Total structure size: 2365 Mbytes
std::map: 6.4 mega ops per second
std::map big endian keys full scan: 32.2 mega ops per second
std::map big endian keys: 2.4 mega ops per second
std::map big endian keys full scan: 10.6 mega ops per second
CPU: AMD Ryzen 5 3600 6-Core Processor
Boost 1.78
Element size: 248 bytes
Total structure size: 2365 Mbytes
std::map: 5.1 mega ops per second
std::map big endian keys full scan: 17.3 mega ops per second