Skip to content

Commit d2fc0a6

Browse files
committed
fix: dont optimize out benches
1 parent fa3529d commit d2fc0a6

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

examples/google_benchmark_cmake/main.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99
template <class... Args>
1010
void BM_Capture(benchmark::State &state, Args &&...args) {
1111
auto args_tuple = std::make_tuple(std::move(args)...);
12-
(void)args_tuple;
1312
for (auto _ : state) {
13+
benchmark::DoNotOptimize(args_tuple);
14+
benchmark::ClobberMemory();
1415
}
1516
}
1617
BENCHMARK_CAPTURE(BM_Capture, int_string_test, 42, std::string("abc"));
@@ -21,6 +22,8 @@ static void BM_rand_vector(benchmark::State &state) {
2122
std::vector<int> v;
2223
for (auto _ : state) {
2324
std::string empty_string;
25+
benchmark::DoNotOptimize(empty_string);
26+
benchmark::ClobberMemory();
2427
}
2528
}
2629
// Register the function as a benchmark
@@ -31,6 +34,8 @@ static void BM_StringCopy(benchmark::State &state) {
3134
std::string x = "hello";
3235
for (auto _ : state) {
3336
std::string copy(x);
37+
benchmark::DoNotOptimize(copy);
38+
benchmark::ClobberMemory();
3439
}
3540
}
3641
// Register the function as a benchmark
@@ -40,7 +45,11 @@ static void BM_memcpy(benchmark::State &state) {
4045
char *src = new char[state.range(0)];
4146
char *dst = new char[state.range(0)];
4247
memset(src, 'x', state.range(0));
43-
for (auto _ : state) memcpy(dst, src, state.range(0));
48+
for (auto _ : state) {
49+
memcpy(dst, src, state.range(0));
50+
benchmark::DoNotOptimize(dst);
51+
benchmark::ClobberMemory();
52+
}
4453
delete[] src;
4554
delete[] dst;
4655
}

examples/google_benchmark_cmake/template_bench.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ void BM_Template(benchmark::State &state) {
1212
std::vector<T> v;
1313
for (auto _ : state) {
1414
v.push_back(T());
15+
benchmark::DoNotOptimize(v);
16+
benchmark::ClobberMemory();
1517
}
1618
}
1719
BENCHMARK_TEMPLATE(BM_Template, int);
@@ -50,6 +52,8 @@ template <typename T, class... ExtraArgs>
5052
void BM_Template1_Capture(benchmark::State &state, ExtraArgs &&...extra_args) {
5153
auto args_tuple = std::make_tuple(std::move(extra_args)...);
5254
for (auto _ : state) {
55+
benchmark::DoNotOptimize(args_tuple);
56+
benchmark::ClobberMemory();
5357
}
5458
}
5559
BENCHMARK_TEMPLATE1_CAPTURE(BM_Template1_Capture, void, int_string_test, 42,

0 commit comments

Comments
 (0)