diff --git a/src/bench/readwriteblock.cpp b/src/bench/readwriteblock.cpp index 7fd9adc2c13..e6d87c6ef05 100644 --- a/src/bench/readwriteblock.cpp +++ b/src/bench/readwriteblock.cpp @@ -19,25 +19,33 @@ #include #include -static FlatFilePos WriteBlockToDisk(ChainstateManager& chainman) +static CBlock CreateTestBlock() { DataStream stream{benchmark::data::block413567}; CBlock block; stream >> TX_WITH_WITNESS(block); + return block; +} - return chainman.m_blockman.SaveBlockToDisk(block, 0); +static void SaveBlockBench(benchmark::Bench& bench) +{ + const auto testing_setup{MakeNoLogFileContext(ChainType::MAIN)}; + auto& blockman{testing_setup->m_node.chainman->m_blockman}; + const CBlock block{CreateTestBlock()}; + bench.run([&] { + const auto pos{blockman.SaveBlockToDisk(block, 413'567)}; + assert(!pos.IsNull()); + }); } static void ReadBlockFromDiskBench(benchmark::Bench& bench) { const auto testing_setup{MakeNoLogFileContext(ChainType::MAIN)}; - ChainstateManager& chainman{*testing_setup->m_node.chainman}; - + auto& blockman{testing_setup->m_node.chainman->m_blockman}; + const auto pos{blockman.SaveBlockToDisk(CreateTestBlock(), 413'567)}; CBlock block; - const auto pos{WriteBlockToDisk(chainman)}; - bench.run([&] { - const auto success{chainman.m_blockman.ReadBlockFromDisk(block, pos)}; + const auto success{blockman.ReadBlockFromDisk(block, pos)}; assert(success); }); } @@ -45,16 +53,16 @@ static void ReadBlockFromDiskBench(benchmark::Bench& bench) static void ReadRawBlockFromDiskBench(benchmark::Bench& bench) { const auto testing_setup{MakeNoLogFileContext(ChainType::MAIN)}; - ChainstateManager& chainman{*testing_setup->m_node.chainman}; - + auto& blockman{testing_setup->m_node.chainman->m_blockman}; + const auto pos{blockman.SaveBlockToDisk(CreateTestBlock(), 413'567)}; std::vector block_data; - const auto pos{WriteBlockToDisk(chainman)}; - + blockman.ReadRawBlockFromDisk(block_data, pos); // warmup bench.run([&] { - const auto success{chainman.m_blockman.ReadRawBlockFromDisk(block_data, pos)}; + const auto success{blockman.ReadRawBlockFromDisk(block_data, pos)}; assert(success); }); } +BENCHMARK(SaveBlockBench, benchmark::PriorityLevel::HIGH); BENCHMARK(ReadBlockFromDiskBench, benchmark::PriorityLevel::HIGH); BENCHMARK(ReadRawBlockFromDiskBench, benchmark::PriorityLevel::HIGH);