dash/doc/benchmarking.md
MarcoFalke ef78dbce53 Merge #16536: doc: Update and extend benchmarking.md
05fdb97df46d0a0675b93e9791bd5d498e5e5117 [doc] Update and extend benchmarking.md (Antoine Riard)

Pull request description:

  Trying to make benchmarking docs a bit more friendly.

  If you have any more ideas, specially on the Notes section, which component need more benchmarks.

  (oh isn't a write-up somewhere to generate flame graphs for core ?)

ACKs for top commit:
  jonatack:
    ACK 05fdb97df46d0a0675b93e9791bd5d498e5e5117
  fanquake:
    ACK 05fdb97df46d0a0675b93e9791bd5d498e5e5117 - with the single nit.

Tree-SHA512: 1d31438065cab12b43b0227c1c774b412ac3d9d46d4cbe69cfe753424a81e51839777e815c70880da8ae6c8fb95221dc7559334eeb550221e8a76fb20a370f75
2021-11-30 00:01:38 -05:00

51 lines
1.5 KiB
Markdown

Benchmarking
============
Dash Core has an internal benchmarking framework, with benchmarks
for cryptographic algorithms (e.g. SHA1, SHA256, SHA512, RIPEMD160, Poly1305, ChaCha20), rolling bloom filter, coins selection,
thread queue, wallet balance.
Running
---------------------
For benchmarks purposes you only need to compile `dash_bench`. Beware of configuring without `--enable-debug` as this would impact
benchmarking by unlatching log printers and lock analysis.
make -C src bench_dash
After compiling Dash Core, the benchmarks can be run with:
src/bench/bench_dash
The output will look similar to:
```
| ns/byte | byte/s | error % | benchmark
|--------------------:|--------------------:|--------:|:----------------------------------------------
| 64.13 | 15,592,356.01 | 0.1% | `Base58CheckEncode`
| 24.56 | 40,722,672.68 | 0.2% | `Base58Decode`
...
```
Help
---------------------
src/bench/bench_dash --help
To print options like scaling factor or per-benchmark filter.
Notes
---------------------
More benchmarks are needed for, in no particular order:
- Script Validation
- Coins database
- Memory pool
- Cuckoo Cache
- P2P throughput
Going Further
--------------------
To monitor Bitcoin Core performance more in depth (like reindex or IBD): https://github.com/chaincodelabs/bitcoinperf
To generate Flame Graphs for Bitcoin Core: https://github.com/eklitzke/bitcoin/blob/flamegraphs/doc/flamegraphs.md