From 72e475dfdeaa4a87dff0eef994e7814e94c40363 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Sun, 28 Feb 2010 16:04:52 +0000 Subject: 2010-03-01 Tatsuhiro Tsujikawa Avoid to calculate end() iterator in each loop. std::deque is particularly slow. Make sure that recalculate end iterator if element is erased during loop. --- src/FileEntry.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/FileEntry.cc') diff --git a/src/FileEntry.cc b/src/FileEntry.cc index e1d4591e..734eb6e8 100644 --- a/src/FileEntry.cc +++ b/src/FileEntry.cc @@ -223,7 +223,8 @@ void FileEntry::poolRequest(const SharedHandle& request) bool FileEntry::removeRequest(const SharedHandle& request) { for(std::deque >::iterator i = - _inFlightRequests.begin(); i != _inFlightRequests.end(); ++i) { + _inFlightRequests.begin(), eoi = _inFlightRequests.end(); + i != eoi; ++i) { if((*i).get() == request.get()) { _inFlightRequests.erase(i); return true; @@ -236,7 +237,8 @@ void FileEntry::removeURIWhoseHostnameIs(const std::string& hostname) { std::deque newURIs; Request req; - for(std::deque::const_iterator itr = _uris.begin(); itr != _uris.end(); ++itr) { + for(std::deque::const_iterator itr = _uris.begin(), + eoi = _uris.end(); itr != eoi; ++itr) { if(((*itr).find(hostname) == std::string::npos) || (req.setUrl(*itr) && (req.getHost() != hostname))) { newURIs.push_back(*itr); -- cgit