From 5f2fa977c3ba0d8d72d545355480505267a7a65d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 14 Mar 2023 21:07:07 +0100 Subject: [PATCH] Adding tests/benchmark/ec.cpp --- tests/CMakeLists.txt | 6 +++- tests/benchmark/CMakeLists.txt | 3 ++ tests/benchmark/ec.cpp | 60 ++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 tests/benchmark/CMakeLists.txt create mode 100644 tests/benchmark/ec.cpp diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2897d8e..37717d3 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -21,4 +21,8 @@ target_include_directories(doctest PRIVATE ${CMAKE_CURRENT_LIST_DIR}/include) add_test( NAME doctest COMMAND $ -ni -fc -) \ No newline at end of file +) + +if (WITH_BENCHMARK) + add_subdirectory( benchmark ) +endif (WITH_BENCHMARK) \ No newline at end of file diff --git a/tests/benchmark/CMakeLists.txt b/tests/benchmark/CMakeLists.txt new file mode 100644 index 0000000..eafab1d --- /dev/null +++ b/tests/benchmark/CMakeLists.txt @@ -0,0 +1,3 @@ + +add_executable(bench_ec ec.cpp) +target_link_libraries(bench_ec PRIVATE ${LIB_NAME}) \ No newline at end of file diff --git a/tests/benchmark/ec.cpp b/tests/benchmark/ec.cpp new file mode 100644 index 0000000..79d1409 --- /dev/null +++ b/tests/benchmark/ec.cpp @@ -0,0 +1,60 @@ +/** + * MIT License + * + * Copyright (c) 2019-2023 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include +#include +#include + + +std::chrono::duration _run(size_t num_keys) { + auto start = std::chrono::steady_clock::now(); + for(size_t i = 0; i < num_keys; i++) { + struct libeosio::ec_keypair k; + libeosio::ec_generate_key(&k); + } + return std::chrono::steady_clock::now() - start; +} + +void test(size_t num_keys) { + float t, kps; + + + std::cout << "Running benchmark for " << num_keys << " keys" << std::endl; + t = _run(num_keys).count(); + kps = static_cast(num_keys) / t; + + std::cout << "Time: " << t << std::endl + << "KPS: " << kps << std::endl; +} + +int main() { + libeosio::ec_init(); + + test(1000); + test(10000); + test(100000); + + libeosio::ec_shutdown(); + + return 0; +} \ No newline at end of file