소스 검색

2009-06-21 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	Small performance optimizations.
	* src/RequestGroupMan.cc
Tatsuhiro Tsujikawa 16 년 전
부모
커밋
3177b0aa1c
2개의 변경된 파일15개의 추가작업 그리고 5개의 파일을 삭제
  1. 5 0
      ChangeLog
  2. 10 5
      src/RequestGroupMan.cc

+ 5 - 0
ChangeLog

@@ -1,3 +1,8 @@
+2009-06-21  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	Small performance optimizations.
+	* src/RequestGroupMan.cc
+
 2009-06-20  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Added _xmlRpc member variable to RequestGroupMan to reduce the

+ 10 - 5
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<SharedHandle<RequestGroup> >::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);