add walltime benchmark and fix unused variable.
diff --git a/src/walltime.cc b/src/walltime.cc
index 51c6d4a..3a47799 100644
--- a/src/walltime.cc
+++ b/src/walltime.cc
@@ -145,6 +145,21 @@
} // end anonymous namespace
+WallTime CPUWalltimeNow() {
+ static WallTimeImp& imp = WallTimeImp::GetWallTimeImp();
+ return imp.Now();
+}
+
+WallTime ChronoWalltimeNow() {
+ typedef std::chrono::system_clock Clock;
+ typedef std::chrono::duration<WallTime, std::chrono::seconds::period>
+ FPSeconds;
+ static_assert(std::chrono::treat_as_floating_point<WallTime>::value,
+ "This type must be treated as a floating point type.");
+ auto now = Clock::now().time_since_epoch();
+ return std::chrono::duration_cast<FPSeconds>(now).count();
+}
+
// WallTimeImp doesn't work when CPU Scaling is enabled. If CPU Scaling is
// enabled at the start of the program then std::chrono::system_clock is used
// instead.
@@ -152,16 +167,9 @@
{
static bool useWallTime = !CpuScalingEnabled();
if (useWallTime) {
- static WallTimeImp& imp = WallTimeImp::GetWallTimeImp();
- return imp.Now();
+ return CPUWalltimeNow();
} else {
- typedef std::chrono::system_clock Clock;
- typedef std::chrono::duration<WallTime, std::chrono::seconds::period>
- FPSeconds;
- static_assert(std::chrono::treat_as_floating_point<WallTime>::value,
- "This type must be treated as a floating point type.");
- auto now = Clock::now().time_since_epoch();
- return std::chrono::duration_cast<FPSeconds>(now).count();
+ return ChronoWalltimeNow();
}
}
@@ -185,6 +193,7 @@
}
std::size_t written = std::strftime(storage, sizeof(storage), "%F %T", &timeinfo);
CHECK(written < arraysize(storage));
+ ((void)written); // prevent unused variable in optimized mode.
return std::string(storage);
}
diff --git a/src/walltime.h b/src/walltime.h
index face158..497112e 100644
--- a/src/walltime.h
+++ b/src/walltime.h
@@ -7,6 +7,8 @@
typedef double WallTime;
namespace walltime {
+WallTime CPUWalltimeNow();
+WallTime ChronoWalltimeNow();
WallTime Now();
} // end namespace walltime
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 8fdb6f3..f8f01d0 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -32,3 +32,5 @@
set_target_properties(cxx03_test
PROPERTIES COMPILE_FLAGS "${CXX03_FLAGS}")
add_test(cxx03 cxx03_test)
+
+compile_benchmark_test(walltime_test)
diff --git a/test/basic_test.cc b/test/basic_test.cc
index f93c8d7..fedcf08 100644
--- a/test/basic_test.cc
+++ b/test/basic_test.cc
@@ -65,8 +65,8 @@
state.ResumeTiming();
}
}
-BENCHMARK_TEST(BM_pause_during);
-BENCHMARK_TEST(BM_pause_during)->ThreadPerCpu();
+BENCHMARK(BM_pause_during);
+BENCHMARK(BM_pause_during)->ThreadPerCpu();
void BM_pause_during_realtime(benchmark::State& state) {
state.UseRealTime();
@@ -75,8 +75,8 @@
state.ResumeTiming();
}
}
-BENCHMARK_TEST(BM_pause_during_realtime);
-BENCHMARK_TEST(BM_pause_during_realtime)->ThreadPerCpu();
+BENCHMARK(BM_pause_during_realtime);
+BENCHMARK(BM_pause_during_realtime)->ThreadPerCpu();
void BM_spin_pause_after(benchmark::State& state) {
while(state.KeepRunning()) {