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 <memory>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
static FlatFilePos WriteBlockToDisk(ChainstateManager& chainman)
|
static CBlock CreateTestBlock()
|
||||||
{
|
{
|
||||||
DataStream stream{benchmark::data::block413567};
|
DataStream stream{benchmark::data::block413567};
|
||||||
CBlock block;
|
CBlock block;
|
||||||
stream >> TX_WITH_WITNESS(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)
|
static void ReadBlockFromDiskBench(benchmark::Bench& bench)
|
||||||
{
|
{
|
||||||
const auto testing_setup{MakeNoLogFileContext<const TestingSetup>(ChainType::MAIN)};
|
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;
|
CBlock block;
|
||||||
const auto pos{WriteBlockToDisk(chainman)};
|
|
||||||
|
|
||||||
bench.run([&] {
|
bench.run([&] {
|
||||||
const auto success{chainman.m_blockman.ReadBlockFromDisk(block, pos)};
|
const auto success{blockman.ReadBlockFromDisk(block, pos)};
|
||||||
assert(success);
|
assert(success);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -45,16 +53,16 @@ static void ReadBlockFromDiskBench(benchmark::Bench& bench)
|
||||||
static void ReadRawBlockFromDiskBench(benchmark::Bench& bench)
|
static void ReadRawBlockFromDiskBench(benchmark::Bench& bench)
|
||||||
{
|
{
|
||||||
const auto testing_setup{MakeNoLogFileContext<const TestingSetup>(ChainType::MAIN)};
|
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;
|
std::vector<uint8_t> block_data;
|
||||||
const auto pos{WriteBlockToDisk(chainman)};
|
blockman.ReadRawBlockFromDisk(block_data, pos); // warmup
|
||||||
|
|
||||||
bench.run([&] {
|
bench.run([&] {
|
||||||
const auto success{chainman.m_blockman.ReadRawBlockFromDisk(block_data, pos)};
|
const auto success{blockman.ReadRawBlockFromDisk(block_data, pos)};
|
||||||
assert(success);
|
assert(success);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BENCHMARK(SaveBlockBench, benchmark::PriorityLevel::HIGH);
|
||||||
BENCHMARK(ReadBlockFromDiskBench, benchmark::PriorityLevel::HIGH);
|
BENCHMARK(ReadBlockFromDiskBench, benchmark::PriorityLevel::HIGH);
|
||||||
BENCHMARK(ReadRawBlockFromDiskBench, benchmark::PriorityLevel::HIGH);
|
BENCHMARK(ReadRawBlockFromDiskBench, benchmark::PriorityLevel::HIGH);
|
||||||
|
|
Loading…
Add table
Reference in a new issue