Skip to content

Commit

Permalink
Merge bitcoin#16267: bench: Benchmark blockToJSON
Browse files Browse the repository at this point in the history
91509ff bench: Benchmark blockToJSON (Kirill Fomichev)

Pull request description:

  Related:
  - "getblock performance issue on verbosity" bitcoin#15925
  - "refactor: Avoid UniValue copy constructor" bitcoin#15974

ACKs for top commit:
  laanwj:
    ACK 91509ff

Tree-SHA512: e70b12cb31921c7527bde334f52f39776da698b6bbdb196079a8b68478c67585a5bd7bed7403f65166bd604f7ed60778c53dc064d743bb8368318a1283d1073e
  • Loading branch information
laanwj authored and vijaydasmp committed Jan 23, 2022
1 parent 400d7ab commit 3066042
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/Makefile.bench.include
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ bench_bench_dash_SOURCES = \
bench/mempool_eviction.cpp \
bench/nanobench.h \
bench/nanobench.cpp \
bench/rpc_blockchain.cpp \
bench/rpc_mempool.cpp \
bench/util_time.cpp \
bench/base58.cpp \
Expand Down
33 changes: 33 additions & 0 deletions src/bench/rpc_blockchain.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
// Copyright (c) 2016-2019 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.h>

#include <validation.h>
#include <streams.h>
#include <consensus/validation.h>
#include <rpc/blockchain.h>

#include <univalue.h>

static void BlockToJsonVerbose(benchmark::State& state) {
CDataStream stream(benchmark::data::block413567, SER_NETWORK, PROTOCOL_VERSION);
char a = '\0';
stream.write(&a, 1); // Prevent compaction

CBlock block;
stream >> block;

CBlockIndex blockindex;
const uint256 blockHash = block.GetHash();
blockindex.phashBlock = &blockHash;
blockindex.nBits = 403014710;

while (state.KeepRunning()) {
(void)blockToJSON(block, &blockindex, &blockindex, /*verbose*/ true);
}
}

BENCHMARK(BlockToJsonVerbose, 10);

0 comments on commit 3066042

Please sign in to comment.