Require a steady clock for bench with at least micro precision

This commit is contained in:
Matt Corallo
2017-11-09 11:48:13 -05:00
parent 9e9e31aa10
commit 620bae34cf
2 changed files with 5 additions and 4 deletions

View File

@@ -37,13 +37,11 @@ BENCHMARK(CODE_TO_TIME);
*/
namespace benchmark {
// On many systems, the high_resolution_clock offers no better resolution than the steady_clock.
// If that's the case, prefer the steady_clock.
// In case high_resolution_clock is steady, prefer that, otherwise use 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<steady_clock::period, hi_res_clock::period>::value;
using type = std::conditional<steady_is_high_res, steady_clock, hi_res_clock>::type;
using type = std::conditional<hi_res_clock::is_steady, hi_res_clock, steady_clock>::type;
};
using clock = best_clock::type;
using time_point = clock::time_point;