mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-29 14:59:39 -04:00
bench: add SaveBlockBench
This commit is contained in:
parent
34f9a0157a
commit
86b85bb11f
1 changed files with 20 additions and 12 deletions
|
@ -19,25 +19,33 @@
|
|||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
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<const TestingSetup>(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<const TestingSetup>(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<const TestingSetup>(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<uint8_t> 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);
|
||||
|
|
Loading…
Add table
Reference in a new issue