mirror of
https://github.com/google/benchmark.git
synced 2024-12-26 20:40:21 +08:00
add walltime benchmark and fix unused variable.
This commit is contained in:
parent
be993acbb3
commit
725f1f066d
@ -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);
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,8 @@ namespace benchmark {
|
||||
typedef double WallTime;
|
||||
|
||||
namespace walltime {
|
||||
WallTime CPUWalltimeNow();
|
||||
WallTime ChronoWalltimeNow();
|
||||
WallTime Now();
|
||||
} // end namespace walltime
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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()) {
|
||||
|
Loading…
Reference in New Issue
Block a user