diff options
author | Martin Leitner-Ankerl <martin.ankerl@gmail.com> | 2023-03-26 15:19:43 +0200 |
---|---|---|
committer | Martin Leitner-Ankerl <martin.ankerl@gmail.com> | 2023-03-26 15:49:41 +0200 |
commit | d380d2877ed45cf1e75a87d822b30e4e1e21e3d4 (patch) | |
tree | 4ed7de5da2eee4bbcb8d4de420d8b8cd071af9af | |
parent | e352f5ab6b60ec1cc549997275e945238508cdee (diff) | |
download | bitcoin-d380d2877ed45cf1e75a87d822b30e4e1e21e3d4.tar.xz |
bench: Add benchmark for prevector usage in std::vector
-rw-r--r-- | src/bench/prevector.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/bench/prevector.cpp b/src/bench/prevector.cpp index 59c4af086e..2524e215e4 100644 --- a/src/bench/prevector.cpp +++ b/src/bench/prevector.cpp @@ -80,6 +80,30 @@ static void PrevectorDeserialize(benchmark::Bench& bench) }); } +template <typename T> +static void PrevectorFillVectorDirect(benchmark::Bench& bench) +{ + bench.run([&] { + std::vector<prevector<28, T>> vec; + for (size_t i = 0; i < 260; ++i) { + vec.emplace_back(); + } + }); +} + + +template <typename T> +static void PrevectorFillVectorIndirect(benchmark::Bench& bench) +{ + bench.run([&] { + std::vector<prevector<28, T>> vec; + for (size_t i = 0; i < 260; ++i) { + // force allocation + vec.emplace_back(29, T{}); + } + }); +} + #define PREVECTOR_TEST(name) \ static void Prevector##name##Nontrivial(benchmark::Bench& bench) \ { \ @@ -96,3 +120,5 @@ PREVECTOR_TEST(Clear) PREVECTOR_TEST(Destructor) PREVECTOR_TEST(Resize) PREVECTOR_TEST(Deserialize) +PREVECTOR_TEST(FillVectorDirect) +PREVECTOR_TEST(FillVectorIndirect) |