Skip to content

Latest commit

 

History

History
55 lines (41 loc) · 1.78 KB

benchmarking.md

File metadata and controls

55 lines (41 loc) · 1.78 KB

Benchmarking

Groestlcoin 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 benchmarking, you only need to compile bench_groestlcoin. The bench runner warns if you configure with -DCMAKE_BUILD_TYPE=Debug, but consider if building without it will impact the benchmark(s) you are interested in by unlatching log printers and lock analysis.

cmake -B build -DBUILD_BENCH=ON
cmake --build build -t bench_groestlcoin

After compiling groestlcoin-core, the benchmarks can be run with:

build/src/bench/bench_groestlcoin

The output will look similar to:

|               ns/op |                op/s |    err% |     total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
|       57,927,463.00 |               17.26 |    3.6% |      0.66 | `AddrManAdd`
|          677,816.00 |            1,475.33 |    4.9% |      0.01 | `AddrManGetAddr`

...

|             ns/byte |              byte/s |    err% |     total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
|              127.32 |        7,854,302.69 |    0.3% |      0.00 | `Base58CheckEncode`
|               31.95 |       31,303,226.99 |    0.2% |      0.00 | `Base58Decode`

...

Help

build/src/bench/bench_groestlcoin -h

To print the various options, like listing the benchmarks without running them or using a regex filter to only run certain benchmarks.

Notes

More benchmarks are needed for, in no particular order:

  • Script Validation
  • Coins database
  • Memory pool
  • Cuckoo Cache
  • P2P throughput