diff options
Diffstat (limited to 'benchmarks/benchmark_main.cpp')
-rw-r--r-- | benchmarks/benchmark_main.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/benchmarks/benchmark_main.cpp b/benchmarks/benchmark_main.cpp index 7140ab6..e922e1e 100644 --- a/benchmarks/benchmark_main.cpp +++ b/benchmarks/benchmark_main.cpp @@ -134,19 +134,23 @@ void Benchmark::RunRepeatedlyWithArg(int iterations, int arg) { } void Benchmark::RunWithArg(int arg) { - // run once in case it's expensive + // Run once in case it's expensive. int iterations = 1; + int64_t realStartTime = NanoTime(); RunRepeatedlyWithArg(iterations, arg); - while (g_benchmark_total_time_ns < 1e9 && iterations < 1e9) { + int64_t realTotalTime = NanoTime() - realStartTime; + while (realTotalTime < 1e9 && iterations < 1e8) { int last = iterations; - if (g_benchmark_total_time_ns/iterations == 0) { + if (realTotalTime/iterations == 0) { iterations = 1e9; } else { - iterations = 1e9 / (g_benchmark_total_time_ns/iterations); + iterations = 1e9 / (realTotalTime/iterations); } iterations = std::max(last + 1, std::min(iterations + iterations/2, 100*last)); iterations = Round(iterations); + realStartTime = NanoTime(); RunRepeatedlyWithArg(iterations, arg); + realTotalTime = NanoTime() - realStartTime; } char throughput[100]; |