Merge "bionic benchmarks: limit benchmark run time to 1s real time"
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::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];