diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-02-28 16:04:52 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-02-28 16:04:52 +0000 |
| commit | 72e475dfdeaa4a87dff0eef994e7814e94c40363 (patch) | |
| tree | 94a84e90c14876db223e4a733f651fe0b034f5e9 /src/DefaultPeerStorage.cc | |
| parent | c342bde9627b434effbc0cd10b817670d1da0923 (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/DefaultPeerStorage.cc')
| -rw-r--r-- | src/DefaultPeerStorage.cc | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/DefaultPeerStorage.cc b/src/DefaultPeerStorage.cc index fc1a3314..2cced586 100644 --- a/src/DefaultPeerStorage.cc +++ b/src/DefaultPeerStorage.cc @@ -112,8 +112,8 @@ bool DefaultPeerStorage::addPeer(const SharedHandle<Peer>& peer) { void DefaultPeerStorage::addPeer(const std::vector<SharedHandle<Peer> >& peers) { - for(std::vector<SharedHandle<Peer> >::const_iterator itr = peers.begin(); - itr != peers.end(); ++itr) { + for(std::vector<SharedHandle<Peer> >::const_iterator itr = peers.begin(), + eoi = peers.end(); itr != eoi; ++itr) { const SharedHandle<Peer>& peer = *itr; if(addPeer(peer)) { if(logger->debug()) { @@ -224,7 +224,7 @@ TransferStat DefaultPeerStorage::calculateStat() struct timeval now; gettimeofday(&now, 0); for(std::vector<SharedHandle<Peer> >::const_iterator i = - activePeers.begin(); i != activePeers.end(); ++i) { + activePeers.begin(), eoi = activePeers.end(); i != eoi; ++i) { TransferStat s; s.downloadSpeed = (*i)->calculateDownloadSpeed(now); s.uploadSpeed = (*i)->calculateUploadSpeed(now); @@ -267,8 +267,8 @@ TransferStat DefaultPeerStorage::getTransferStatFor void DefaultPeerStorage::deleteUnusedPeer(size_t delSize) { std::deque<SharedHandle<Peer> > temp; - for(std::deque<SharedHandle<Peer> >::reverse_iterator itr = peers.rbegin(); - itr != peers.rend(); ++itr) { + for(std::deque<SharedHandle<Peer> >::const_reverse_iterator itr = + peers.rbegin(), eoi = peers.rend(); itr != eoi; ++itr) { const SharedHandle<Peer>& p = *itr; if(p->unused() && delSize > 0) { onErasingPeer(p); |
