summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-11-02 17:56:01 (GMT)
committerBrad King <brad.king@kitware.com>2023-11-22 12:49:04 (GMT)
commit0432b921aecfee3cf400a1f1ad8e65a1f7bc5a01 (patch)
tree98bfb765076a62022f61e2b0112bf4f68be95999
parentb17c732e88e5681fd1ec90d587d796c44329028b (diff)
downloadCMake-0432b921aecfee3cf400a1f1ad8e65a1f7bc5a01.zip
CMake-0432b921aecfee3cf400a1f1ad8e65a1f7bc5a01.tar.gz
CMake-0432b921aecfee3cf400a1f1ad8e65a1f7bc5a01.tar.bz2
cmCTestMultiProcessHandler: Inline removal of pending test as it starts
Avoid searching the entire list of ordered pending tests to remove one when we already know where it is.
-rw-r--r--Source/CTest/cmCTestMultiProcessHandler.cxx17
-rw-r--r--Source/CTest/cmCTestMultiProcessHandler.h1
2 files changed, 7 insertions, 11 deletions
diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx
index d910367..be210f4 100644
--- a/Source/CTest/cmCTestMultiProcessHandler.cxx
+++ b/Source/CTest/cmCTestMultiProcessHandler.cxx
@@ -438,13 +438,6 @@ void cmCTestMultiProcessHandler::UnlockResources(int index)
this->RunningCount -= this->GetProcessorsUsed(index);
}
-void cmCTestMultiProcessHandler::ErasePendingTest(int test)
-{
- this->PendingTests.erase(test);
- this->OrderedTests.erase(
- std::find(this->OrderedTests.begin(), this->OrderedTests.end(), test));
-}
-
inline size_t cmCTestMultiProcessHandler::GetProcessorsUsed(int test)
{
size_t processors = static_cast<int>(this->Properties[test]->Processors);
@@ -537,7 +530,8 @@ void cmCTestMultiProcessHandler::StartNextTests()
ti != this->OrderedTests.end()) {
// Increment the test iterator now because the current list
// entry may be deleted below.
- int test = *ti++;
+ auto cti = ti++;
+ int test = *cti;
// We can only start a RUN_SERIAL test if no other tests are also
// running.
@@ -592,7 +586,8 @@ void cmCTestMultiProcessHandler::StartNextTests()
// The test is ready to run.
numToStart -= processors;
- this->ErasePendingTest(test);
+ this->OrderedTests.erase(cti);
+ this->PendingTests.erase(test);
this->StartTest(test);
}
@@ -1411,7 +1406,9 @@ void cmCTestMultiProcessHandler::CheckResume()
void cmCTestMultiProcessHandler::RemoveTest(int index)
{
- this->ErasePendingTest(index);
+ this->OrderedTests.erase(
+ std::find(this->OrderedTests.begin(), this->OrderedTests.end(), index));
+ this->PendingTests.erase(index);
this->Properties.erase(index);
this->Completed++;
}
diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h
index ffbe16f..1be04aa 100644
--- a/Source/CTest/cmCTestMultiProcessHandler.h
+++ b/Source/CTest/cmCTestMultiProcessHandler.h
@@ -127,7 +127,6 @@ protected:
// Removes the checkpoint file
void MarkFinished();
- void ErasePendingTest(int index);
void FinishTestProcess(std::unique_ptr<cmCTestRunTest> runner, bool started);
void StartNextTestsOnIdle();