summaryrefslogtreecommitdiff
path: root/src/UTMetadataRequestTracker.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/UTMetadataRequestTracker.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/UTMetadataRequestTracker.cc')
-rw-r--r--src/UTMetadataRequestTracker.cc9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/UTMetadataRequestTracker.cc b/src/UTMetadataRequestTracker.cc
index fd6da586..33380a8c 100644
--- a/src/UTMetadataRequestTracker.cc
+++ b/src/UTMetadataRequestTracker.cc
@@ -68,8 +68,8 @@ std::vector<size_t> UTMetadataRequestTracker::removeTimeoutEntry()
{
std::vector<size_t> indexes;
const time_t TIMEOUT = 20;
- for(std::vector<RequestEntry>::iterator i = _trackedRequests.begin();
- i != _trackedRequests.end();) {
+ for(std::vector<RequestEntry>::iterator i = _trackedRequests.begin(),
+ eoi = _trackedRequests.end(); i != eoi;) {
if((*i).elapsed(TIMEOUT)) {
if(_logger->debug()) {
_logger->debug("ut_metadata request timeout. index=%lu",
@@ -77,6 +77,7 @@ std::vector<size_t> UTMetadataRequestTracker::removeTimeoutEntry()
}
indexes.push_back((*i)._index);
i = _trackedRequests.erase(i);
+ eoi = _trackedRequests.end();
} else {
++i;
}
@@ -97,8 +98,8 @@ size_t UTMetadataRequestTracker::avail() const
std::vector<size_t> UTMetadataRequestTracker::getAllTrackedIndex() const
{
std::vector<size_t> indexes;
- for(std::vector<RequestEntry>::const_iterator i = _trackedRequests.begin();
- i != _trackedRequests.end(); ++i) {
+ for(std::vector<RequestEntry>::const_iterator i = _trackedRequests.begin(),
+ eoi = _trackedRequests.end(); i != eoi; ++i) {
indexes.push_back((*i)._index);
}
return indexes;