diff options
| author | levlam <levlam@telegram.org> | 2022-08-29 17:08:00 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2022-08-29 17:08:00 +0300 |
| commit | ad4638d3c95be1e3e7f29c8673e449ef02672052 (patch) | |
| tree | 26a11959f8efeac4c197b40dda54ff4648b95a4c /benchmark | |
| parent | 398a996ef8c0cbc361797185956929f67d39c101 (diff) | |
Add SHA benchmarks.
Diffstat (limited to 'benchmark')
| -rw-r--r-- | benchmark/bench_crypto.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
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<unsigned char>(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<unsigned char>(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<unsigned char>(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()); } |
