0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-03-09 15:37:00 -04:00
bitcoin-core/src/bench
Wladimir J. van der Laan 05e821ee19
Merge #21170: bench: Add benchmark to write JSON into a string
e3e0a2432c Add benchmark to write JSON into a string (Martin Ankerl)

Pull request description:

  The benchmark `BlockToJsonVerbose` only tests generating (and destroying)
  the JSON data structure, but serializing into a string is also a
  performance critical aspect of the RPC calls.

  Extracts test setup into a `struct TestBlockAndIndex`, and uses it in
  both `BlockToJsonVerbose` and `BlockToJsonVerboseWrite`.

  Also, use `ankerl::nanobench::doNotOptimizeAway` to make sure the compiler
  can't optimize the result of the calls away.

  Here are benchmark results on my Intel i7-8700:

  |               ns/op |                op/s |    err% |          ins/op |          cyc/op |    IPC |         bra/op |   miss% |     total | benchmark
  |--------------------:|--------------------:|--------:|----------------:|----------------:|-------:|---------------:|--------:|----------:|:----------
  |       71,807,017.00 |               13.93 |    0.4% |  555,782,961.00 |  220,788,645.00 |  2.517 | 102,279,341.00 |    0.4% |      0.80 | `BlockToJsonVerbose`
  |       27,916,835.00 |               35.82 |    0.1% |  235,084,034.00 |   89,033,525.00 |  2.640 |  42,911,139.00 |    0.3% |      0.32 | `BlockToJsonVerboseWrite`

ACKs for top commit:
  laanwj:
    Code review ACK e3e0a2432c

Tree-SHA512: bc4d6d1588d47d4bd7af8e7908e44b8561bc391a2d73eccd7c0aa37fc40e8a9ce1fa1f3c29b416eef24a73c6bce3036839c0bbfe1b8dbd6d1bba3718b7ca5383
2021-03-01 19:12:09 +01:00
..
data Add deserialize + CheckBlock benchmarks, and a full block hex 2016-11-09 11:27:59 -08:00
.gitignore Ignore bench_bitcoin binary. 2015-10-06 17:46:12 +02:00
addrman.cpp [addrman] Specify max addresses and pct when calling GetAddresses() 2020-08-12 09:22:07 +01:00
base58.cpp scripted-diff: Bump copyright headers 2020-12-31 09:45:41 +01:00
bech32.cpp Replace current benchmarking framework with nanobench 2020-06-13 12:24:18 +02:00
bench.cpp bench: Allow skip benchmark 2020-08-14 14:56:18 +03:00
bench.h Drop boost/preprocessor dependencies 2021-02-01 22:30:06 +02:00
bench_bitcoin.cpp Merge #18011: Replace current benchmarking framework with nanobench 2020-07-30 15:34:17 +02:00
block_assemble.cpp scripted-diff: Invoke ::AcceptToMemoryPool with chainstate 2021-02-18 14:49:06 -05:00
ccoins_caching.cpp Only relay Taproot spends if next block has it active 2020-10-30 15:52:19 -07:00
chacha20.cpp scripted-diff: Bump copyright headers 2020-12-31 09:45:41 +01:00
chacha_poly_aead.cpp Do not run functions with necessary side-effects in assert() 2020-12-06 00:48:09 +00:00
checkblock.cpp Remove gArgs global from CreateChainParams to aid testing 2020-09-29 10:20:05 +02:00
checkqueue.cpp bench: Use CCheckQueue local thread pool 2020-09-24 06:55:34 +03:00
coin_selection.cpp Merge #20040: wallet: Refactor OutputGroups to handle fees and spending eligibility on grouping 2021-02-01 22:43:17 +13:00
crypto_hash.cpp bench: Add Muhash benchmarks 2020-12-21 19:57:33 +01:00
data.cpp refactor: init vectors via std::{begin,end} to avoid pointer arithmetic 2021-01-31 17:35:01 +01:00
data.h bench: Move generated data to a dedicated translation unit 2019-07-02 18:11:15 +01:00
duplicate_inputs.cpp Replace current benchmarking framework with nanobench 2020-06-13 12:24:18 +02:00
examples.cpp Replace current benchmarking framework with nanobench 2020-06-13 12:24:18 +02:00
gcs_filter.cpp scripted-diff: Bump copyright headers 2020-12-31 09:45:41 +01:00
hashpadding.cpp scripted-diff: Bump copyright headers 2020-12-31 09:45:41 +01:00
lockedpool.cpp scripted-diff: Bump copyright headers 2020-12-31 09:45:41 +01:00
mempool_eviction.cpp scripted-diff: Bump copyright headers 2020-12-31 09:45:41 +01:00
mempool_stress.cpp scripted-diff: Bump copyright headers 2020-12-31 09:45:41 +01:00
merkle_root.cpp Replace current benchmarking framework with nanobench 2020-06-13 12:24:18 +02:00
nanobench.cpp Replace current benchmarking framework with nanobench 2020-06-13 12:24:18 +02:00
nanobench.h Replace current benchmarking framework with nanobench 2020-06-13 12:24:18 +02:00
poly1305.cpp scripted-diff: Bump copyright headers 2020-12-31 09:45:41 +01:00
prevector.cpp Merge #20464: refactor: Treat CDataStream bytes as uint8_t 2021-02-01 15:17:28 +01:00
rollingbloom.cpp scripted-diff: Bump copyright headers 2020-12-31 09:45:41 +01:00
rpc_blockchain.cpp Add benchmark to write JSON into a string 2021-02-13 13:14:16 +01:00
rpc_mempool.cpp scripted-diff: Bump copyright headers 2020-12-31 09:45:41 +01:00
util_time.cpp scripted-diff: Bump copyright headers 2020-12-31 09:45:41 +01:00
verify_script.cpp doc: fix various typos 2021-01-04 12:31:31 +08:00
wallet_balance.cpp Replace boost::optional with std::optional 2020-12-19 09:46:55 +01:00