@@ -93,6 +93,7 @@ BenchmarkReporter::Run CreateRunReport(
9393 if (!report.skipped ) {
9494 if (b.use_manual_time ()) {
9595 report.real_accumulated_time = results.manual_time_used ;
96+ report.manual_accumulated_time_pow2 = results.manual_time_used_pow2 ;
9697 } else {
9798 report.real_accumulated_time = results.real_time_used ;
9899 }
@@ -139,7 +140,7 @@ void RunInThread(const BenchmarkInstance* b, IterationCount iters,
139140 results.cpu_time_used += timer.cpu_time_used ();
140141 results.real_time_used += timer.real_time_used ();
141142 results.manual_time_used += timer.manual_time_used ();
142- results.manual_time_used2 += timer.manual_time_used2 ();
143+ results.manual_time_used_pow2 += timer.manual_time_used_pow2 ();
143144 results.complexity_n += st.complexity_length_n ();
144145 internal::Increment (&results.counters , st.counters );
145146 }
@@ -225,8 +226,10 @@ BenchmarkRunner::BenchmarkRunner(
225226 : b(b_),
226227 reports_for_family (reports_for_family_),
227228 parsed_benchtime_flag(ParseBenchMinTime(FLAGS_benchmark_min_time)),
228- min_time(ComputeMinTime(b_, parsed_benchtime_flag)),
229- min_rel_accuracy(b_min_rel_accuracy()),
229+ min_time(ComputeMinTime(b, parsed_benchtime_flag)),
230+ min_rel_accuracy(!IsZero(b.min_rel_accuracy())
231+ ? b.min_rel_accuracy()
232+ : FLAGS_benchmark_min_rel_accuracy),
230233 min_warmup_time((!IsZero(b.min_time()) && b.min_warmup_time() > 0.0)
231234 ? b.min_warmup_time()
232235 : FLAGS_benchmark_min_warmup_time),
@@ -303,10 +306,10 @@ BenchmarkRunner::IterationResults BenchmarkRunner::DoNIterations() {
303306
304307 // Base decisions off of real time if requested by this benchmark.
305308 i.seconds = i.results .cpu_time_used ;
306- i.seconds2 = 0 ;
309+ i.seconds_pow2 = 0 ;
307310 if (b.use_manual_time ()) {
308311 i.seconds = i.results .manual_time_used ;
309- i.seconds2 = i.results .manual_time_used2 ;
312+ i.seconds_pow2 = i.results .manual_time_used_pow2 ;
310313 } else if (b.use_real_time ()) {
311314 i.seconds = i.results .real_time_used ;
312315 }
@@ -333,8 +336,8 @@ IterationCount BenchmarkRunner::PredictNumItersNeeded(
333336
334337 // So what seems to be the sufficiently-large iteration count? Round up.
335338 const IterationCount max_next_iters = static_cast <IterationCount>(
336- std::lround (std::max (multiplier * static_cast <double >(i.iters ),
337- static_cast <double >(i.iters ) + 1.0 )));
339+ std::llround (std::max (multiplier * static_cast <double >(i.iters ),
340+ static_cast <double >(i.iters ) + 1.0 )));
338341 // But we do have *some* limits though..
339342 const IterationCount next_iters = std::min (max_next_iters, kMaxIterations );
340343
@@ -364,8 +367,8 @@ double BenchmarkRunner::GetMinTimeToApply() const {
364367 return warmup_done ? min_time : min_warmup_time;
365368}
366369
367- double GetRelAccuracy (const IterationResults& i) const {
368- return std::sqrt (i.seconds2 / i.iters - std::pow (i.seconds / i.iters , 2 .)) / (i.seconds / i.iters ) / sqrt (i.iters );
370+ double BenchmarkRunner:: GetRelAccuracy (const IterationResults& i) const {
371+ return std::sqrt (i.seconds_pow2 / i.iters - std::pow (i.seconds / i.iters , 2 .)) / (i.seconds / i.iters ) / sqrt (i.iters );
369372}
370373
371374bool BenchmarkRunner::HasSufficientTimeToApply (const IterationResults& i) const {
@@ -377,7 +380,7 @@ bool BenchmarkRunner::HasSufficientTimeToApply(const IterationResults& i) const
377380}
378381
379382bool BenchmarkRunner::HasSufficientRelAccuracy (const IterationResults& i) const {
380- return (! IsZero (GetMinRelAccuracy ()) && (GetRelAccuracy (i) <= GetMinRelAccuracy ()));
383+ return (IsZero (GetMinRelAccuracy ()) || (GetRelAccuracy (i) <= GetMinRelAccuracy ()));
381384}
382385
383386void BenchmarkRunner::FinishWarmUp (const IterationCount& i) {
0 commit comments