2008-05-15 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>

Use erase+lower_bound+insert instead of sort.
	* src/DefaultPieceStorage.cc (addPieceStats)
pull/1/head
Tatsuhiro Tsujikawa 2008-05-14 15:43:38 +00:00
parent f2588a882b
commit 46636201c1
2 changed files with 20 additions and 10 deletions

View File

@ -1,3 +1,8 @@
2008-05-15 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Use erase+lower_bound+insert instead of sort.
* src/DefaultPieceStorage.cc (addPieceStats)
2008-05-15 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Use A2STR::SHARP_C and A2STR::EQUAL_C.

View File

@ -701,19 +701,24 @@ void DefaultPieceStorage::updatePieceStats(const unsigned char* newBitfield,
void DefaultPieceStorage::addPieceStats(size_t index)
{
std::deque<SharedHandle<PieceStat> >::iterator cur =
SharedHandle<PieceStat> pieceStat(_pieceStats[index]);
{
std::deque<SharedHandle<PieceStat> >::iterator cur =
std::lower_bound(_sortedPieceStats.begin(), _sortedPieceStats.end(),
pieceStat, PieceRarer());
_sortedPieceStats.erase(cur);
}
pieceStat->addCount();
std::deque<SharedHandle<PieceStat> >::iterator to =
std::lower_bound(_sortedPieceStats.begin(), _sortedPieceStats.end(),
_pieceStats[index], PieceRarer());
pieceStat, PieceRarer());
(*cur)->addCount();
_sortedPieceStats.insert(to, pieceStat);
std::deque<SharedHandle<PieceStat> >::iterator last =
std::upper_bound(cur+1, _sortedPieceStats.end(), *cur, PieceRarer());
std::sort(cur, last, PieceRarer());
// for(std::deque<SharedHandle<PieceStat> >::const_iterator i = _sortedPieceStats.begin(); i != _sortedPieceStats.end(); ++i) {
// logger->debug("index = %u, count = %u", (*i)->getIndex(), (*i)->getCount());
// }
// for(std::deque<SharedHandle<PieceStat> >::const_iterator i = _sortedPieceStats.begin(); i != _sortedPieceStats.end(); ++i) {
// logger->debug("index = %u, count = %u", (*i)->getIndex(), (*i)->getCount());
// }
}
PieceStat::PieceStat(size_t index):_order(0), _index(index), _count(0) {}