/
githubmirror
/
bitcoin
Обзор
Документация
Войти
/
githubmirror
/
bitcoin
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/bench/readwriteblock.cpp
69 строк
2 KB
Hennadii Stepanov
iwyu: Fix warnings in `src/bench` and treat them as error
10 июн 2026, 12:32
Не верифицирован
10 июн 2026, 12:32
6751a32
Код
Авторство
О чём код?
// Copyright (c) 2023-present The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include <bench/bench.h> #include <bench/data/block413567.raw.h> #include <flatfile.h> #include <node/blockstorage.h> #include <primitives/block.h> #include <primitives/transaction.h> #include <serialize.h> #include <streams.h> #include <sync.h> #include <test/util/setup_common.h> #include <uint256.h> #include <util/check.h> #include <validation.h> #include <memory> #include <optional> #include <span> static CBlock CreateTestBlock() { CBlock block; SpanReader{benchmark::data::block413567} >> TX_WITH_WITNESS(block); return block; } static void WriteBlockBench(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([&] { LOCK(::cs_main); const auto pos{blockman.WriteBlock(block, 413'567)}; assert(!pos.IsNull()); }); } static void ReadBlockBench(benchmark::Bench& bench) { const auto testing_setup{MakeNoLogFileContext<const TestingSetup>(ChainType::MAIN)}; auto& blockman{testing_setup->m_node.chainman->m_blockman}; const auto& test_block{CreateTestBlock()}; const auto& expected_hash{test_block.GetHash()}; const auto& pos{WITH_LOCK(::cs_main, return blockman.WriteBlock(test_block, 413'567))}; bench.run([&] { CBlock block; const auto success{blockman.ReadBlock(block, pos, expected_hash)}; assert(success); }); } static void ReadRawBlockBench(benchmark::Bench& bench) { const auto testing_setup{MakeNoLogFileContext<const TestingSetup>(ChainType::MAIN)}; auto& blockman{testing_setup->m_node.chainman->m_blockman}; const auto pos{WITH_LOCK(::cs_main, return blockman.WriteBlock(CreateTestBlock(), 413'567))}; bench.run([&] { const auto res{blockman.ReadRawBlock(pos)}; assert(res); }); } BENCHMARK(WriteBlockBench); BENCHMARK(ReadBlockBench); BENCHMARK(ReadRawBlockBench);