diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2019-07-08 20:03:25 +0200 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2019-07-08 20:14:31 +0200 |
commit | 0a6ee9797e65335eeacfc0c2f27de3a998e06c82 (patch) | |
tree | 84b77cdf26ae15b925043bd58bd42b24699f22c2 /src | |
parent | 4882040182ea1109ef9befde93c2f49a98aba391 (diff) | |
parent | 91509ffe247b0eacbf84214c7c9c3f8a0012f2eb (diff) |
Merge #16267: bench: Benchmark blockToJSON
91509ffe247b0eacbf84214c7c9c3f8a0012f2eb bench: Benchmark blockToJSON (Kirill Fomichev)
Pull request description:
Related:
- "getblock performance issue on verbosity" https://github.com/bitcoin/bitcoin/issues/15925
- "refactor: Avoid UniValue copy constructor" #15974
ACKs for top commit:
laanwj:
ACK 91509ffe247b0eacbf84214c7c9c3f8a0012f2eb
Tree-SHA512: e70b12cb31921c7527bde334f52f39776da698b6bbdb196079a8b68478c67585a5bd7bed7403f65166bd604f7ed60778c53dc064d743bb8368318a1283d1073e
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.bench.include | 1 | ||||
-rw-r--r-- | src/bench/rpc_blockchain.cpp | 33 |
2 files changed, 34 insertions, 0 deletions
diff --git a/src/Makefile.bench.include b/src/Makefile.bench.include index 1b01b50b07..c1d9bf281c 100644 --- a/src/Makefile.bench.include +++ b/src/Makefile.bench.include @@ -29,6 +29,7 @@ bench_bench_bitcoin_SOURCES = \ bench/gcs_filter.cpp \ bench/merkle_root.cpp \ bench/mempool_eviction.cpp \ + bench/rpc_blockchain.cpp \ bench/rpc_mempool.cpp \ bench/util_time.cpp \ bench/verify_script.cpp \ diff --git a/src/bench/rpc_blockchain.cpp b/src/bench/rpc_blockchain.cpp new file mode 100644 index 0000000000..29e448fc43 --- /dev/null +++ b/src/bench/rpc_blockchain.cpp @@ -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); |