Skip to content

Commit 86b85bb

Browse files
committed
bench: add SaveBlockBench
1 parent 34f9a01 commit 86b85bb

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

src/bench/readwriteblock.cpp

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,42 +19,50 @@
1919
#include <memory>
2020
#include <vector>
2121

22-
static FlatFilePos WriteBlockToDisk(ChainstateManager& chainman)
22+
static CBlock CreateTestBlock()
2323
{
2424
DataStream stream{benchmark::data::block413567};
2525
CBlock block;
2626
stream >> TX_WITH_WITNESS(block);
27+
return block;
28+
}
2729

28-
return chainman.m_blockman.SaveBlockToDisk(block, 0);
30+
static void SaveBlockBench(benchmark::Bench& bench)
31+
{
32+
const auto testing_setup{MakeNoLogFileContext<const TestingSetup>(ChainType::MAIN)};
33+
auto& blockman{testing_setup->m_node.chainman->m_blockman};
34+
const CBlock block{CreateTestBlock()};
35+
bench.run([&] {
36+
const auto pos{blockman.SaveBlockToDisk(block, 413'567)};
37+
assert(!pos.IsNull());
38+
});
2939
}
3040

3141
static void ReadBlockFromDiskBench(benchmark::Bench& bench)
3242
{
3343
const auto testing_setup{MakeNoLogFileContext<const TestingSetup>(ChainType::MAIN)};
34-
ChainstateManager& chainman{*testing_setup->m_node.chainman};
35-
44+
auto& blockman{testing_setup->m_node.chainman->m_blockman};
45+
const auto pos{blockman.SaveBlockToDisk(CreateTestBlock(), 413'567)};
3646
CBlock block;
37-
const auto pos{WriteBlockToDisk(chainman)};
38-
3947
bench.run([&] {
40-
const auto success{chainman.m_blockman.ReadBlockFromDisk(block, pos)};
48+
const auto success{blockman.ReadBlockFromDisk(block, pos)};
4149
assert(success);
4250
});
4351
}
4452

4553
static void ReadRawBlockFromDiskBench(benchmark::Bench& bench)
4654
{
4755
const auto testing_setup{MakeNoLogFileContext<const TestingSetup>(ChainType::MAIN)};
48-
ChainstateManager& chainman{*testing_setup->m_node.chainman};
49-
56+
auto& blockman{testing_setup->m_node.chainman->m_blockman};
57+
const auto pos{blockman.SaveBlockToDisk(CreateTestBlock(), 413'567)};
5058
std::vector<uint8_t> block_data;
51-
const auto pos{WriteBlockToDisk(chainman)};
52-
59+
blockman.ReadRawBlockFromDisk(block_data, pos); // warmup
5360
bench.run([&] {
54-
const auto success{chainman.m_blockman.ReadRawBlockFromDisk(block_data, pos)};
61+
const auto success{blockman.ReadRawBlockFromDisk(block_data, pos)};
5562
assert(success);
5663
});
5764
}
5865

66+
BENCHMARK(SaveBlockBench, benchmark::PriorityLevel::HIGH);
5967
BENCHMARK(ReadBlockFromDiskBench, benchmark::PriorityLevel::HIGH);
6068
BENCHMARK(ReadRawBlockFromDiskBench, benchmark::PriorityLevel::HIGH);

0 commit comments

Comments
 (0)