Leprechain 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.
For benchmarks purposes you only need to compile leprechain_bench
. Beware of configuring without --enable-debug
as this would impact
benchmarking by unlatching log printers and lock analysis.
make -C src leprechain_bench
After compiling Leprechain Core, the benchmarks can be run with:
src/bench/bench_leprechain
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`
...
src/bench/bench_leprechain --help
To print options like scaling factor or per-benchmark filter.
More benchmarks are needed for, in no particular order:
- Script Validation
- Coins database
- Memory pool
- Cuckoo Cache
- P2P throughput
To monitor Leprechain Core performance more in depth (like reindex or IBD): https://github.com/chaincodelabs/bitcoinperf
To generate Flame Graphs for Leprechain Core: https://github.com/eklitzke/bitcoin/blob/flamegraphs/doc/flamegraphs.md