From 24a0bddf4ae13d8f1fa0436a547de67dcf6d4f2a Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Wed, 25 Oct 2017 17:54:05 -0400 Subject: [PATCH] bench: prefer a steady clock if the resolution is no worse --- src/bench/bench.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/bench/bench.h b/src/bench/bench.h index d7037e1f3..d276f4ee9 100644 --- a/src/bench/bench.h +++ b/src/bench/bench.h @@ -37,8 +37,15 @@ BENCHMARK(CODE_TO_TIME); */ namespace benchmark { - - using clock = std::chrono::high_resolution_clock; + // On many systems, the high_resolution_clock offers no better resolution than the steady_clock. + // If that's the case, prefer the steady_clock. + struct best_clock { + using hi_res_clock = std::chrono::high_resolution_clock; + using steady_clock = std::chrono::steady_clock; + static constexpr bool steady_is_high_res = std::ratio_less_equal::value; + using type = std::conditional::type; + }; + using clock = best_clock::type; using time_point = clock::time_point; using duration = clock::duration;