Skip to content

Commit 7bc016b

Browse files
committed
Use average real time instead of max
1 parent 25d5659 commit 7bc016b

File tree

1 file changed

+8
-13
lines changed

1 file changed

+8
-13
lines changed

src/benchmark.cc

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -717,11 +717,8 @@ void RunInThread(const benchmark::internal::Benchmark::Instance* b,
717717
{
718718
MutexLock l(manager->GetBenchmarkMutex());
719719
manager->cpu_time_used += timer.cpu_time_used();
720-
// Take the largest value
721-
manager->real_time_used =
722-
std::max(manager->real_time_used, timer.real_time_used());
723-
manager->manual_time_used =
724-
std::max(manager->manual_time_used, timer.manual_time_used());
720+
manager->real_time_used += timer.real_time_used();
721+
manager->manual_time_used += timer.manual_time_used();
725722
manager->bytes_processed += st.bytes_processed();
726723
manager->items_processed += st.items_processed();
727724
manager->complexity_n += st.complexity_length_n();
@@ -735,12 +732,10 @@ std::vector<BenchmarkReporter::Run> RunBenchmark(
735732
std::vector<BenchmarkReporter::Run> reports; // return value
736733

737734
size_t iters = 1;
738-
735+
const int num_threads = b.multithreaded ? b.threads : 1;
739736
std::vector<std::thread> pool;
740-
if (b.multithreaded) {
741-
CHECK(b.threads >= 1);
742-
pool.resize(b.threads - 1);
743-
}
737+
if (num_threads > 1) pool.resize(num_threads -1);
738+
744739
const int repeats = b.repetitions != 0 ? b.repetitions
745740
: FLAGS_benchmark_repetitions;
746741
const bool report_aggregates_only = repeats != 1 &&
@@ -753,7 +748,7 @@ std::vector<BenchmarkReporter::Run> RunBenchmark(
753748
// Try benchmark
754749
VLOG(2) << "Running " << b.name << " for " << iters << "\n";
755750

756-
internal::ThreadManager manager(b.multithreaded ? b.threads : 1);
751+
internal::ThreadManager manager(num_threads);
757752
if (b.multithreaded) {
758753
// If this is out first iteration of the while(true) loop then the
759754
// threads haven't been started and can't be joined. Otherwise we need
@@ -772,8 +767,8 @@ std::vector<BenchmarkReporter::Run> RunBenchmark(
772767
MutexLock l(manager.GetBenchmarkMutex());
773768

774769
const double cpu_accumulated_time = manager.cpu_time_used;
775-
const double real_accumulated_time = manager.real_time_used;
776-
const double manual_accumulated_time = manager.manual_time_used;
770+
const double real_accumulated_time = manager.real_time_used / num_threads;
771+
const double manual_accumulated_time = manager.manual_time_used / num_threads;
777772

778773
VLOG(2) << "Ran in " << cpu_accumulated_time << "/"
779774
<< real_accumulated_time << "\n";

0 commit comments

Comments
 (0)