summaryrefslogtreecommitdiff
path: root/src/FileEntry.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-02-28 16:04:52 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-02-28 16:04:52 +0000
commit72e475dfdeaa4a87dff0eef994e7814e94c40363 (patch)
tree94a84e90c14876db223e4a733f651fe0b034f5e9 /src/FileEntry.cc
parentc342bde9627b434effbc0cd10b817670d1da0923 (diff)
2010-03-01 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
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.
Diffstat (limited to 'src/FileEntry.cc')
-rw-r--r--src/FileEntry.cc6
1 files changed, 4 insertions, 2 deletions
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>& request)
bool FileEntry::removeRequest(const SharedHandle<Request>& request)
{
for(std::deque<SharedHandle<Request> >::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<std::string> newURIs;
Request req;
- for(std::deque<std::string>::const_iterator itr = _uris.begin(); itr != _uris.end(); ++itr) {
+ for(std::deque<std::string>::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);