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/DHTFindNodeReplyMessage.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/DHTFindNodeReplyMessage.cc') diff --git a/src/DHTFindNodeReplyMessage.cc b/src/DHTFindNodeReplyMessage.cc index 269b0a62..387024f7 100644 --- a/src/DHTFindNodeReplyMessage.cc +++ b/src/DHTFindNodeReplyMessage.cc @@ -61,8 +61,8 @@ DHTFindNodeReplyMessage::~DHTFindNodeReplyMessage() {} void DHTFindNodeReplyMessage::doReceivedAction() { - for(std::vector >::iterator i = _closestKNodes.begin(); - i != _closestKNodes.end(); ++i) { + for(std::vector >::iterator i = _closestKNodes.begin(), + eoi = _closestKNodes.end(); i != eoi; ++i) { if(memcmp((*i)->getID(), _localNode->getID(), DHT_ID_LENGTH) != 0) { _routingTable->addNode(*i); } @@ -77,8 +77,8 @@ BDE DHTFindNodeReplyMessage::getResponse() unsigned char buffer[DHTBucket::K*26]; // TODO if _closestKNodes.size() > DHTBucket::K ?? for(std::vector >::const_iterator i = - _closestKNodes.begin(); - i != _closestKNodes.end() && offset < DHTBucket::K*26; ++i) { + _closestKNodes.begin(), eoi = _closestKNodes.end(); + i != eoi && offset < DHTBucket::K*26; ++i) { SharedHandle node = *i; memcpy(buffer+offset, node->getID(), DHT_ID_LENGTH); if(bittorrent::createcompact(buffer+20+offset, node->getIPAddress(), -- cgit