diff options
| author | Arseny Smirnov <arseny30@gmail.com> | 2020-06-12 18:06:40 +0300 |
|---|---|---|
| committer | Arseny Smirnov <arseny30@gmail.com> | 2020-06-12 18:06:40 +0300 |
| commit | c4ed5ce140d597829adc8d20ab8f619e10cd3535 (patch) | |
| tree | 195201e1f6893c5638ed52bea13e49ad1077ee5a /benchmark/bench_crypto.cpp | |
| parent | 541f15bd6889eef42084dfcd4ce7ea8fc0a9c512 (diff) | |
tdutils: aes experiments
GitOrigin-RevId: 1dd2812041778679fb1ef0462d9e8b1899181e0b
Diffstat (limited to 'benchmark/bench_crypto.cpp')
| -rw-r--r-- | benchmark/bench_crypto.cpp | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/benchmark/bench_crypto.cpp b/benchmark/bench_crypto.cpp index 3cab9a8c4..6536fa613 100644 --- a/benchmark/bench_crypto.cpp +++ b/benchmark/bench_crypto.cpp @@ -48,6 +48,36 @@ class SHA1Bench : public td::Benchmark { } }; +class AesBench : public td::Benchmark { + public: + alignas(64) unsigned char data[DATA_SIZE]; + td::UInt256 key; + td::UInt256 iv; + + std::string get_description() const override { + return PSTRING() << "AES ECB OpenSSL [" << (DATA_SIZE >> 10) << "KB]"; + } + + void start_up() override { + for (int i = 0; i < DATA_SIZE; i++) { + data[i] = 123; + } + td::Random::secure_bytes(key.raw, sizeof(key)); + td::Random::secure_bytes(iv.raw, sizeof(iv)); + } + + void run(int n) override { + td::AesState state; + state.init(td::as_slice(key), true); + td::MutableSlice data_slice(data, DATA_SIZE); + for (int i = 0; i <= n; i++) { + for (size_t offset = 0; offset + 16 <= data_slice.size(); offset += 16) { + state.encrypt(data_slice.ubegin() + offset, data_slice.ubegin() + offset); + } + } + } +}; + class AESBench : public td::Benchmark { public: alignas(64) unsigned char data[DATA_SIZE]; @@ -197,6 +227,8 @@ class Crc64Bench : public td::Benchmark { int main() { td::init_openssl_threads(); + td::bench(AesBench()); + td::bench(AESBench()); td::bench(Pbkdf2Bench()); td::bench(RandBench()); @@ -208,7 +240,6 @@ int main() { #endif td::bench(SslRandBufBench()); td::bench(SHA1Bench()); - td::bench(AESBench()); td::bench(Crc32Bench()); td::bench(Crc64Bench()); return 0; |
