diff --git a/ChangeLog b/ChangeLog index 438a506a..9280c92c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-06-21 Tatsuhiro Tsujikawa + + Small performance optimizations. + * src/RequestGroupMan.cc + 2009-06-20 Tatsuhiro Tsujikawa Added _xmlRpc member variable to RequestGroupMan to reduce the diff --git a/src/RequestGroupMan.cc b/src/RequestGroupMan.cc index 00f98a47..68d029c6 100644 --- a/src/RequestGroupMan.cc +++ b/src/RequestGroupMan.cc @@ -393,10 +393,13 @@ void RequestGroupMan::removeStoppedGroup(DownloadEngine* e) ProcessStoppedRequestGroup(e, _reservedGroups, _downloadResults)); - _requestGroups.erase(std::remove_if(_requestGroups.begin(), - _requestGroups.end(), - FindStoppedRequestGroup()), - _requestGroups.end()); + std::deque >::iterator i = + std::remove_if(_requestGroups.begin(), + _requestGroups.end(), + FindStoppedRequestGroup()); + if(i != _requestGroups.end()) { + _requestGroups.erase(i, _requestGroups.end()); + } size_t numRemoved = numPrev-_requestGroups.size(); if(numRemoved > 0) { @@ -465,7 +468,9 @@ void RequestGroupMan::fillRequestGroupFromReserver(DownloadEngine* e) _downloadResults.push_back(groupToAdd->createDownloadResult()); } } - _reservedGroups.insert(_reservedGroups.begin(), temp.begin(), temp.end()); + if(!temp.empty()) { + _reservedGroups.insert(_reservedGroups.begin(), temp.begin(), temp.end()); + } if(count > 0) { e->setNoWait(true); _logger->debug("%d RequestGroup(s) added.", count);