add walltime benchmark and fix unused variable.

This commit is contained in:
Eric Fiselier 2015-03-26 14:56:52 -04:00
parent be993acbb3
commit 725f1f066d
4 changed files with 26 additions and 13 deletions

View File

@ -145,6 +145,21 @@ WallTimeImp::WallTimeImp()
} // 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 @@ WallTime Now()
{
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::string DateTimeString(bool local) {
}
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);
}

View File

@ -7,6 +7,8 @@ namespace benchmark {
typedef double WallTime;
namespace walltime {
WallTime CPUWalltimeNow();
WallTime ChronoWalltimeNow();
WallTime Now();
} // end namespace walltime

View File

@ -32,3 +32,5 @@ compile_benchmark_test(cxx03_test)
set_target_properties(cxx03_test
PROPERTIES COMPILE_FLAGS "${CXX03_FLAGS}")
add_test(cxx03 cxx03_test)
compile_benchmark_test(walltime_test)

View File

@ -65,8 +65,8 @@ void BM_pause_during(benchmark::State& state) {
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 @@ void BM_pause_during_realtime(benchmark::State& state) {
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()) {