summaryrefslogtreecommitdiffstats
path: root/ci
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2024-03-05 10:36:18 (GMT)
committerCopybara-Service <copybara-worker@google.com>2024-03-05 10:37:09 (GMT)
commitb9059aaa4cb93b3fb177670cbfd9c6d0690af37e (patch)
tree4e7561407a284cb66b326fb0a40b5ac0ec13c65d /ci
parent926f681a902cbfb84a863dafb77175f4a25be6ea (diff)
downloadgoogletest-b9059aaa4cb93b3fb177670cbfd9c6d0690af37e.zip
googletest-b9059aaa4cb93b3fb177670cbfd9c6d0690af37e.tar.gz
googletest-b9059aaa4cb93b3fb177670cbfd9c6d0690af37e.tar.bz2
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 various 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: 612763676 Change-Id: I1f46e012ccb9004c009e1027e4f7c38780ffb9e2
Diffstat (limited to 'ci')
0 files changed, 0 insertions, 0 deletions