31 lines
913 B
C++
31 lines
913 B
C++
|
|
#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;
|
|
}
|