From ad4638d3c95be1e3e7f29c8673e449ef02672052 Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 29 Aug 2022 17:08:00 +0300 Subject: [PATCH] Add SHA benchmarks. --- benchmark/bench_crypto.cpp | 63 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/benchmark/bench_crypto.cpp b/benchmark/bench_crypto.cpp index fc9cdb5a5..1fe3a2b21 100644 --- a/benchmark/bench_crypto.cpp +++ b/benchmark/bench_crypto.cpp @@ -52,6 +52,66 @@ class SHA1Bench final : public td::Benchmark { }; #endif +class SHA1ShortBench final : public td::Benchmark { + public: + alignas(64) unsigned char data[SHORT_DATA_SIZE]; + + std::string get_description() const final { + return PSTRING() << "SHA1 [" << SHORT_DATA_SIZE << "B]"; + } + + void start_up() final { + std::fill(std::begin(data), std::end(data), static_cast(123)); + } + + void run(int n) final { + unsigned char md[20]; + for (int i = 0; i < n; i++) { + td::sha1(td::Slice(data, SHORT_DATA_SIZE), md); + } + } +}; + +class SHA256ShortBench final : public td::Benchmark { + public: + alignas(64) unsigned char data[SHORT_DATA_SIZE]; + + std::string get_description() const final { + return PSTRING() << "SHA256 [" << SHORT_DATA_SIZE << "B]"; + } + + void start_up() final { + std::fill(std::begin(data), std::end(data), static_cast(123)); + } + + void run(int n) final { + unsigned char md[32]; + for (int i = 0; i < n; i++) { + td::sha256(td::Slice(data, SHORT_DATA_SIZE), td::MutableSlice(md, 32)); + } + } +}; + +class SHA512ShortBench final : public td::Benchmark { + public: + alignas(64) unsigned char data[SHORT_DATA_SIZE]; + + std::string get_description() const final { + return PSTRING() << "SHA512 [" << SHORT_DATA_SIZE << "B]"; + } + + void start_up() final { + std::fill(std::begin(data), std::end(data), static_cast(123)); + } + + void run(int n) final { + unsigned char md[64]; + for (int i = 0; i < n; i++) { + td::sha512(td::Slice(data, SHORT_DATA_SIZE), td::MutableSlice(md, 64)); + } + } +}; + class AesEcbBench final : public td::Benchmark { public: alignas(64) unsigned char data[DATA_SIZE]; @@ -415,6 +475,9 @@ int main() { #if OPENSSL_VERSION_NUMBER <= 0x10100000L td::bench(SHA1Bench()); #endif + td::bench(SHA1ShortBench()); + td::bench(SHA256ShortBench()); + td::bench(SHA512ShortBench()); td::bench(Crc32Bench()); td::bench(Crc64Bench()); }