diff --git a/CMakeLists.txt b/CMakeLists.txt index 1665ddb..7c88e8e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,6 +29,7 @@ include(CTest) set(CMAKE_CTEST_ARGUMENTS "--timeout 5") enable_testing() +# Unit testing binary add_executable(forward_list_test test/testing.cpp ) @@ -38,3 +39,13 @@ target_link_libraries(forward_list_test include(GoogleTest) gtest_discover_tests(forward_list_test) + +# ==== Benchmarking ==== +find_package(benchmark REQUIRED) + +add_executable(forward_list_bench + benchmarking/benchmarking.cpp +) +target_link_libraries(forward_list_bench + PRIVATE forward_list_lib benchmark::benchmark pthread +) diff --git a/benchmarking/benchmarking.cpp b/benchmarking/benchmarking.cpp new file mode 100644 index 0000000..fe72b81 --- /dev/null +++ b/benchmarking/benchmarking.cpp @@ -0,0 +1,48 @@ +#include +#include "../header/forward_list.hpp" +#include +//stl saya +static void BM_My_PushFront(benchmark::State& state){ + for(auto _ : state){ + forward_listslist; + for(int i = 0;i < state.range(0);i++){ + list.push_front(i); + } + state.SetComplexityN(state.range(0)); + benchmark::DoNotOptimize(list); + } +} +BENCHMARK(BM_My_PushFront)->Arg(1000)->Arg(10000)->Complexity(); + +static void BM_Stl_PushFront(benchmark::State& state){ + for(auto _ : state){ + std::forward_listlist; + for(int i = 0;i < state.range(0);i++){ + list.push_front(i); + } + state.SetComplexityN(state.range(0)); + benchmark::DoNotOptimize(list); + } +} +BENCHMARK(BM_Stl_PushFront)->Arg(1000)->Arg(10000)->Complexity(); + +static void BM_my_single_push(benchmark::State& state){ + for(auto _ : state){ + forward_listslist; + list.push_front(10); + benchmark::DoNotOptimize(list); + state.SetComplexityN(state.iterations()); + } +} +BENCHMARK(BM_my_single_push)->Arg(1000)->Arg(100000)->Complexity(); + +static void BM_stl_single_push(benchmark::State& state){ + for(auto _ : state){ + std::forward_listlist; + list.push_front(10); + benchmark::DoNotOptimize(list); + state.SetComplexityN(state.iterations()); + } +} +BENCHMARK(BM_stl_single_push)->Arg(1000)->Arg(100000)->Complexity(); +BENCHMARK_MAIN(); \ No newline at end of file