diff options
| author | Wladimir J. van der Laan <[email protected]> | 2016-05-10 18:19:03 +0200 |
|---|---|---|
| committer | Wladimir J. van der Laan <[email protected]> | 2016-05-11 19:47:25 +0200 |
| commit | 32114dd63493fd169bf666fc3a5b4a912c083766 (patch) | |
| tree | fa2af04acb99406edd9c3a0545f8dbdb08594ea1 /src/bench/crypto_hash.cpp | |
| parent | Merge #8028: Fix insanity of CWalletDB::WriteTx and CWalletTx::WriteToDisk (diff) | |
| download | discoin-32114dd63493fd169bf666fc3a5b4a912c083766.tar.xz discoin-32114dd63493fd169bf666fc3a5b4a912c083766.zip | |
bench: Add crypto hash benchmarks
Add benchmarks for the cryptographic hash algorithms:
- RIPEMD160
- SHA1
- SHA256
- SHA512
Continues work on #7883.
Diffstat (limited to 'src/bench/crypto_hash.cpp')
| -rw-r--r-- | src/bench/crypto_hash.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/bench/crypto_hash.cpp b/src/bench/crypto_hash.cpp new file mode 100644 index 000000000..6b753f630 --- /dev/null +++ b/src/bench/crypto_hash.cpp @@ -0,0 +1,53 @@ +// Copyright (c) 2016 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 <iostream> + +#include "bench.h" +#include "bloom.h" +#include "utiltime.h" +#include "crypto/ripemd160.h" +#include "crypto/sha1.h" +#include "crypto/sha256.h" +#include "crypto/sha512.h" + +/* Number of bytes to hash per iteration */ +static const uint64_t BUFFER_SIZE = 1000*1000; + +static void RIPEMD160(benchmark::State& state) +{ + uint8_t hash[CRIPEMD160::OUTPUT_SIZE]; + std::vector<uint8_t> in(BUFFER_SIZE,0); + while (state.KeepRunning()) + CRIPEMD160().Write(begin_ptr(in), in.size()).Finalize(hash); +} + +static void SHA1(benchmark::State& state) +{ + uint8_t hash[CSHA1::OUTPUT_SIZE]; + std::vector<uint8_t> in(BUFFER_SIZE,0); + while (state.KeepRunning()) + CSHA1().Write(begin_ptr(in), in.size()).Finalize(hash); +} + +static void SHA256(benchmark::State& state) +{ + uint8_t hash[CSHA256::OUTPUT_SIZE]; + std::vector<uint8_t> in(BUFFER_SIZE,0); + while (state.KeepRunning()) + CSHA256().Write(begin_ptr(in), in.size()).Finalize(hash); +} + +static void SHA512(benchmark::State& state) +{ + uint8_t hash[CSHA512::OUTPUT_SIZE]; + std::vector<uint8_t> in(BUFFER_SIZE,0); + while (state.KeepRunning()) + CSHA512().Write(begin_ptr(in), in.size()).Finalize(hash); +} + +BENCHMARK(RIPEMD160); +BENCHMARK(SHA1); +BENCHMARK(SHA256); +BENCHMARK(SHA512); |