mirror of
https://github.com/orange-cpp/omath.git
synced 2026-02-12 22:53:27 +00:00
added benchmark submodule
This commit is contained in:
@@ -1,13 +1,10 @@
|
||||
enable_testing()
|
||||
project(omath_benchmark)
|
||||
|
||||
project(benchmark)
|
||||
|
||||
include(GoogleTest)
|
||||
file(GLOB_RECURSE OMATH_BENCHMARK_SOURCES CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")
|
||||
add_executable(${PROJECT_NAME} ${OMATH_BENCHMARK_SOURCES})
|
||||
|
||||
file(GLOB_RECURSE UNIT_TESTS_SOURCES CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")
|
||||
add_executable(${PROJECT_NAME} ${UNIT_TESTS_SOURCES})
|
||||
|
||||
set_target_properties(benchmark PROPERTIES
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}"
|
||||
@@ -17,6 +14,4 @@ set_target_properties(benchmark PROPERTIES
|
||||
CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE gtest gtest_main omath::omath)
|
||||
|
||||
gtest_discover_tests(${PROJECT_NAME})
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE benchmark::benchmark omath)
|
||||
@@ -1,31 +1,28 @@
|
||||
//
|
||||
// Created by Vlad on 9/17/2025.
|
||||
//
|
||||
#include <gtest/gtest.h>
|
||||
#include <benchmark/benchmark.h>
|
||||
|
||||
#include <omath/omath.hpp>
|
||||
#include <chrono>
|
||||
#include <print>
|
||||
|
||||
using namespace omath;
|
||||
TEST(MatPerformanceTest, Mutl)
|
||||
|
||||
static void BM_MatMutiplication(benchmark::State& state)
|
||||
{
|
||||
using mat_type = Mat<128, 128, float, MatStoreType::COLUMN_MAJOR>;
|
||||
mat_type a;
|
||||
mat_type b;
|
||||
a.set(3.f);
|
||||
b.set(7.f);
|
||||
constexpr int iters = 1000;
|
||||
float acum_time = 0.f;
|
||||
mat_type c;
|
||||
for (std::size_t i = 0 ; i < iters; i++)
|
||||
|
||||
|
||||
for (auto _ : state)
|
||||
{
|
||||
const auto start = std::chrono::high_resolution_clock::now();
|
||||
c = a * b;
|
||||
const auto end = std::chrono::high_resolution_clock::now();
|
||||
|
||||
const auto time = std::chrono::duration_cast<std::chrono::microseconds>(end - start).count();
|
||||
|
||||
acum_time += static_cast<float>(time);
|
||||
std::ignore = a * b;
|
||||
}
|
||||
std::print("Elapsed: {}, \n\n\n", acum_time / iters, c);
|
||||
}
|
||||
}
|
||||
|
||||
BENCHMARK(BM_MatMutiplication);
|
||||
BENCHMARK_MAIN();
|
||||
Reference in New Issue
Block a user