// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include #include using namespace vespalib; TEST("require that the benchmark timer can be used as advertised") { BenchmarkTimer timer(1.0); while (timer.has_budget()) { timer.before(); FastOS_Thread::Sleep(5); timer.after(); } EXPECT_TRUE(timer.min_time() >= 0.0); fprintf(stderr, "5 ms sleep takes: %g ms\n", timer.min_time() * 1000.0); } TEST("require that the benchmark timer all-in-one benchmarking works") { uint32_t sleep_time = 5; double t = BenchmarkTimer::benchmark([sleep_time](){FastOS_Thread::Sleep(sleep_time);}, 1.0); fprintf(stderr, "5 ms sleep takes: %g ms\n", t * 1000.0); } TEST("require that the benchmark timer all-in-one benchmarking with baseline works") { uint32_t work_time = 10; uint32_t baseline_time = 5; double t = BenchmarkTimer::benchmark([&](){FastOS_Thread::Sleep(work_time);}, [&](){FastOS_Thread::Sleep(baseline_time);}, 1.0); fprintf(stderr, "10 ms sleep - 5 ms sleep takes: %g ms\n", t * 1000.0); } TEST("require that the benchmark timer all-in-one benchmarking with baseline and specified loop count works") { uint32_t work_time = 2; uint32_t baseline_time = 1; uint32_t loop_cnt = 0; double t = BenchmarkTimer::benchmark([&](){FastOS_Thread::Sleep(work_time); ++loop_cnt;}, [&](){FastOS_Thread::Sleep(baseline_time);}, 7, 0.0); EXPECT_EQUAL(loop_cnt, 7u); fprintf(stderr, "2 ms sleep - 1 ms sleep takes: %g ms\n", t * 1000.0); } TEST_MAIN() { TEST_RUN_ALL(); }