|
19 | 19 | #include <memory>
|
20 | 20 | #include <vector>
|
21 | 21 |
|
22 |
| -static FlatFilePos WriteBlockToDisk(ChainstateManager& chainman) |
| 22 | +static CBlock CreateTestBlock() |
23 | 23 | {
|
24 | 24 | DataStream stream{benchmark::data::block413567};
|
25 | 25 | CBlock block;
|
26 | 26 | stream >> TX_WITH_WITNESS(block);
|
| 27 | + return block; |
| 28 | +} |
27 | 29 |
|
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 | + }); |
29 | 39 | }
|
30 | 40 |
|
31 | 41 | static void ReadBlockFromDiskBench(benchmark::Bench& bench)
|
32 | 42 | {
|
33 | 43 | 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)}; |
36 | 46 | CBlock block;
|
37 |
| - const auto pos{WriteBlockToDisk(chainman)}; |
38 |
| - |
39 | 47 | bench.run([&] {
|
40 |
| - const auto success{chainman.m_blockman.ReadBlockFromDisk(block, pos)}; |
| 48 | + const auto success{blockman.ReadBlockFromDisk(block, pos)}; |
41 | 49 | assert(success);
|
42 | 50 | });
|
43 | 51 | }
|
44 | 52 |
|
45 | 53 | static void ReadRawBlockFromDiskBench(benchmark::Bench& bench)
|
46 | 54 | {
|
47 | 55 | 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)}; |
50 | 58 | std::vector<uint8_t> block_data;
|
51 |
| - const auto pos{WriteBlockToDisk(chainman)}; |
52 |
| - |
| 59 | + blockman.ReadRawBlockFromDisk(block_data, pos); // warmup |
53 | 60 | bench.run([&] {
|
54 |
| - const auto success{chainman.m_blockman.ReadRawBlockFromDisk(block_data, pos)}; |
| 61 | + const auto success{blockman.ReadRawBlockFromDisk(block_data, pos)}; |
55 | 62 | assert(success);
|
56 | 63 | });
|
57 | 64 | }
|
58 | 65 |
|
| 66 | +BENCHMARK(SaveBlockBench, benchmark::PriorityLevel::HIGH); |
59 | 67 | BENCHMARK(ReadBlockFromDiskBench, benchmark::PriorityLevel::HIGH);
|
60 | 68 | BENCHMARK(ReadRawBlockFromDiskBench, benchmark::PriorityLevel::HIGH);
|
0 commit comments