summaryrefslogtreecommitdiff
path: root/src/DefaultPeerStorage.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/DefaultPeerStorage.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/DefaultPeerStorage.cc')
-rw-r--r--src/DefaultPeerStorage.cc10
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);