| |
| #include <chrono> |
| #include <thread> |
| |
| #include "benchmark/benchmark.h" |
| #include "output_test.h" |
| |
| // BM_ScopedPause sleeps for 10ms in a ScopedPauseTiming block. |
| // The reported time should be much less than 10ms. |
| void BM_ScopedPause(benchmark::State& state) { |
| for (auto _ : state) { |
| benchmark::ScopedPauseTiming pause(state); |
| std::this_thread::sleep_for(std::chrono::milliseconds(10)); |
| state.SetIterationTime(0.0); |
| } |
| } |
| BENCHMARK(BM_ScopedPause)->UseManualTime()->Iterations(1); |
| |
| void CheckResults(Results const& results) { |
| // Check that the real time is much less than the 10ms sleep time. |
| // Allow for up to 1ms of timing noise/overhead. |
| CHECK_FLOAT_RESULT_VALUE(results, "real_time", LT, 1e6, 0.0); |
| } |
| CHECK_BENCHMARK_RESULTS("BM_ScopedPause", &CheckResults); |
| |
| int main(int argc, char* argv[]) { |
| benchmark::MaybeReenterWithoutASLR(argc, argv); |
| RunOutputTests(argc, argv); |
| return 0; |
| } |