ChaosBenches: Add Md4HasherCreateComputeDeleteBench

This commit is contained in:
hashlag
2026-01-25 17:24:58 +03:00
parent cbefae2256
commit 660b13a045
3 changed files with 52 additions and 0 deletions

View File

@@ -15,3 +15,4 @@ target_include_directories(Chaos INTERFACE
) )
add_subdirectory(ChaosTests) add_subdirectory(ChaosTests)
add_subdirectory(ChaosBenches)

View File

@@ -0,0 +1,21 @@
include(FetchContent)
cmake_policy(SET CMP0135 NEW)
FetchContent_Declare(
googlebenchmark
URL https://github.com/google/benchmark/archive/refs/tags/v1.9.5.tar.gz
URL_HASH SHA256=9631341c82bac4a288bef951f8b26b41f69021794184ece969f8473977eaa340
)
set(BENCHMARK_ENABLE_WERROR OFF CACHE BOOL "" FORCE)
set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googlebenchmark)
set(ChaosBenches_SOURCE Hash/Md4HasherBenches.cpp)
add_executable(ChaosBenches ${ChaosBenches_SOURCE})
target_link_libraries(ChaosBenches benchmark::benchmark)
target_include_directories(ChaosBenches PRIVATE
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/Chaos>
)

View File

@@ -0,0 +1,30 @@
#include <benchmark/benchmark.h>
#include <Hash/Md4.hpp>
using namespace Chaos::Hash::Md4;
static void Md4HasherCreateComputeDeleteBench(benchmark::State & state)
{
const char * data
= "All states, all powers, that have held and hold rule over men have been and are either republics or principalities.\n"
"Principalities are either hereditary, in which the family has been long established; or they are new.\n"
"The new are either entirely new, as was Milan to Francesco Sforza, or they are, as it were, members annexed to the hereditary state of the "
"prince who has acquired them, as was the kingdom of Naples to that of the King of Spain.\n"
"Such dominions thus acquired are either accustomed to live under a prince, or to live in freedom; and are acquired either by the arms of the "
"prince himself, or of others, or else by fortune or by ability.";
const size_t dataLen = strlen(data);
for (auto _ : state)
{
Md4Hasher hasher;
hasher.Update(data, data + dataLen);
Md4Hash result = hasher.Finish();
benchmark::DoNotOptimize(result);
}
}
BENCHMARK(Md4HasherCreateComputeDeleteBench);
BENCHMARK_MAIN();