aboutsummaryrefslogtreecommitdiff
path: root/googlemock
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2024-03-07 23:53:04 -0800
committerCopybara-Service <copybara-worker@google.com>2024-03-07 23:53:47 -0800
commite1a38bc3707741d249fa22d2064552a08e37555b (patch)
tree596321a4fa5a9329f510e8972a22d42d9590aa7a /googlemock
parent31993dfa6b47e11c7a6ef67cfa8af90892b9bd1c (diff)
downloadgoogletest-e1a38bc3707741d249fa22d2064552a08e37555b.zip
googletest-e1a38bc3707741d249fa22d2064552a08e37555b.tar.gz
googletest-e1a38bc3707741d249fa22d2064552a08e37555b.tar.bz2
Reland: Optimize Google Test process startup
Google Test performs hidden test registration during process startup. For test binaries that contain a large number of tests, this registration can be costly. In this CL, we reduce the overhead of registration via several tactics: - Treat CodeLocation and FilePath as value types, using std::move to pass them around. - Reduce string copies in various places by either passing std::string values via std::move, or passing const-refs to std::string instances. - Use std::to_string to stringify an int in DefaultParamName rather than a std::stringstream. - Pull some std::string instances out of nested loops in ParameterizedTestSuiteInfo::RegisterTests so as to reuse some allocations, and replace stringstream with ordinary string appends. - Use std::unordered_map in UnitTestImpl::GetTestSuite and ParameterizedTestSuiteRegistry::GetTestSuitePatternHolder to spend a little memory to turn O(N) lookups into constant time lookpus. - Use range-based for loops in a few places. - Use emplace-ish methods to add to containers where appropriate. All together, these changes reduce the overall runtime of a series of 50 death tests in a single Chromium test executable by ~38% due to the fact that the registration costs are paid in every death test's child process. PiperOrigin-RevId: 613833210 Change-Id: I51a262a770edff98ffa1e3b60c4d78a8308f9a9f
Diffstat (limited to 'googlemock')
0 files changed, 0 insertions, 0 deletions