mirror of
https://github.com/bitcoin/bitcoin.git
synced 2024-11-20 10:38:42 +01:00
Add ChaCha20 bench
This commit is contained in:
parent
2bc2b8b49a
commit
2dfe275171
@ -21,6 +21,7 @@ bench_bench_bitcoin_SOURCES = \
|
||||
bench/duplicate_inputs.cpp \
|
||||
bench/examples.cpp \
|
||||
bench/rollingbloom.cpp \
|
||||
bench/chacha20.cpp \
|
||||
bench/crypto_hash.cpp \
|
||||
bench/ccoins_caching.cpp \
|
||||
bench/gcs_filter.cpp \
|
||||
|
46
src/bench/chacha20.cpp
Normal file
46
src/bench/chacha20.cpp
Normal file
@ -0,0 +1,46 @@
|
||||
// Copyright (c) 2019 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/bench.h>
|
||||
#include <hash.h>
|
||||
#include <crypto/chacha20.h>
|
||||
|
||||
/* Number of bytes to process per iteration */
|
||||
static const uint64_t BUFFER_SIZE_TINY = 64;
|
||||
static const uint64_t BUFFER_SIZE_SMALL = 256;
|
||||
static const uint64_t BUFFER_SIZE_LARGE = 1024*1024;
|
||||
|
||||
static void CHACHA20(benchmark::State& state, size_t buffersize)
|
||||
{
|
||||
std::vector<uint8_t> key(32,0);
|
||||
ChaCha20 ctx(key.data(), key.size());
|
||||
ctx.SetIV(0);
|
||||
ctx.Seek(0);
|
||||
std::vector<uint8_t> in(buffersize,0);
|
||||
std::vector<uint8_t> out(buffersize,0);
|
||||
while (state.KeepRunning()) {
|
||||
ctx.Crypt(in.data(), out.data(), in.size());
|
||||
}
|
||||
}
|
||||
|
||||
static void CHACHA20_64BYTES(benchmark::State& state)
|
||||
{
|
||||
CHACHA20(state, BUFFER_SIZE_TINY);
|
||||
}
|
||||
|
||||
static void CHACHA20_256BYTES(benchmark::State& state)
|
||||
{
|
||||
CHACHA20(state, BUFFER_SIZE_SMALL);
|
||||
}
|
||||
|
||||
static void CHACHA20_1MB(benchmark::State& state)
|
||||
{
|
||||
CHACHA20(state, BUFFER_SIZE_LARGE);
|
||||
}
|
||||
|
||||
BENCHMARK(CHACHA20_64BYTES, 500000);
|
||||
BENCHMARK(CHACHA20_256BYTES, 250000);
|
||||
BENCHMARK(CHACHA20_1MB, 340);
|
Loading…
Reference in New Issue
Block a user