Skip to content

Commit ae1276b

Browse files
committed
Restore benchmark config macros
1 parent 6665998 commit ae1276b

File tree

2 files changed

+30
-17
lines changed

2 files changed

+30
-17
lines changed

CMakeLists.txt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@ cmake_minimum_required(VERSION 3.21)
22
project(bitvector)
33

44
set(CMAKE_CXX_STANDARD 17)
5+
6+
# Allow configuring how long tests may run and how long benchmarks
7+
# should execute. The timeout for GoogleTest-based unit tests is set via
8+
# `BITVECTOR_TEST_TIMEOUT`. The minimum runtime for Google Benchmark
9+
# benchmarks is configured with `BITVECTOR_BENCHMARK_MIN_TIME`.
10+
set(BITVECTOR_TEST_TIMEOUT 10 CACHE STRING "Timeout in seconds for each unit test")
11+
set(BITVECTOR_BENCHMARK_MIN_TIME 0.2 CACHE STRING "Minimum time in seconds for benchmark runs")
12+
513
option(BITVECTOR_NO_BOUND_CHECK "Disable bounds checking in bitvector" ON)
614
if(BITVECTOR_NO_BOUND_CHECK)
715
add_compile_definitions(BITVECTOR_NO_BOUND_CHECK)
@@ -78,6 +86,7 @@ target_link_libraries(bitvector_tests GTest::gtest_main)
7886
# Benchmark target
7987
add_executable(bitvector_benchmark bitvector_benchmark.cpp)
8088
target_link_libraries(bitvector_benchmark benchmark::benchmark)
89+
target_compile_definitions(bitvector_benchmark PRIVATE BITVECTOR_BENCHMARK_MIN_TIME=${BITVECTOR_BENCHMARK_MIN_TIME})
8190

8291

8392
# Link your project with Google Test (only for test purposes)
@@ -91,5 +100,5 @@ target_link_libraries(bitvector_benchmark benchmark::benchmark)
91100

92101
# Enable test discovery
93102
include(GoogleTest)
94-
gtest_discover_tests(bitvector_tests)
103+
gtest_discover_tests(bitvector_tests PROPERTIES TIMEOUT ${BITVECTOR_TEST_TIMEOUT})
95104

bitvector_benchmark.cpp

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
#include <benchmark/benchmark.h>
33
#include <vector>
44

5+
#ifndef BITVECTOR_BENCHMARK_MIN_TIME
6+
#define BITVECTOR_BENCHMARK_MIN_TIME 0.2
7+
#endif
8+
59
using bowen::bitvector;
610

711
static void BM_Bowen_Set(benchmark::State& state) {
@@ -187,21 +191,21 @@ static void BM_Std_IncrementUntilZero(benchmark::State& state) {
187191
}
188192
}
189193

190-
BENCHMARK(BM_Bowen_Set)->Arg(1<<20)->MinTime(5.0);
191-
BENCHMARK(BM_Std_Set)->Arg(1<<20)->MinTime(5.0);
192-
BENCHMARK(BM_Bowen_PushBack)->Arg(1<<20)->MinTime(5.0);
193-
BENCHMARK(BM_Std_PushBack)->Arg(1<<20)->MinTime(5.0);
194-
BENCHMARK(BM_Bowen_Access)->Arg(1<<20)->MinTime(5.0);
195-
BENCHMARK(BM_Std_Access)->Arg(1<<20)->MinTime(5.0);
196-
BENCHMARK(BM_Bowen_SetBit)->Arg(1<<20)->MinTime(5.0);
197-
BENCHMARK(BM_Std_SetBit)->Arg(1<<20)->MinTime(5.0);
198-
BENCHMARK(BM_Bowen_SetBitTrueUnsafe)->Arg(1<<20)->MinTime(5.0);
199-
BENCHMARK(BM_Std_SetBitTrueUnsafe)->Arg(1<<20)->MinTime(5.0);
200-
BENCHMARK(BM_Bowen_SetBitTrue6)->Arg(1<<20)->MinTime(5.0);
201-
BENCHMARK(BM_Std_SetBitTrue6)->Arg(1<<20)->MinTime(5.0);
202-
BENCHMARK(BM_Bowen_QSetBitTrue6V2)->Arg(1<<20)->MinTime(5.0);
203-
BENCHMARK(BM_Std_QSetBitTrue6)->Arg(1<<20)->MinTime(5.0);
204-
BENCHMARK(BM_Bowen_IncrementUntilZero)->Arg(1<<20)->MinTime(5.0);
205-
BENCHMARK(BM_Std_IncrementUntilZero)->Arg(1<<20)->MinTime(5.0);
194+
BENCHMARK(BM_Bowen_Set)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
195+
BENCHMARK(BM_Std_Set)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
196+
BENCHMARK(BM_Bowen_PushBack)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
197+
BENCHMARK(BM_Std_PushBack)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
198+
BENCHMARK(BM_Bowen_Access)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
199+
BENCHMARK(BM_Std_Access)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
200+
BENCHMARK(BM_Bowen_SetBit)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
201+
BENCHMARK(BM_Std_SetBit)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
202+
BENCHMARK(BM_Bowen_SetBitTrueUnsafe)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
203+
BENCHMARK(BM_Std_SetBitTrueUnsafe)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
204+
BENCHMARK(BM_Bowen_SetBitTrue6)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
205+
BENCHMARK(BM_Std_SetBitTrue6)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
206+
BENCHMARK(BM_Bowen_QSetBitTrue6V2)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
207+
BENCHMARK(BM_Std_QSetBitTrue6)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
208+
BENCHMARK(BM_Bowen_IncrementUntilZero)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
209+
BENCHMARK(BM_Std_IncrementUntilZero)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
206210

207211
BENCHMARK_MAIN();

0 commit comments

Comments
 (0)