@@ -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