mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-12-15 08:01:05 +08:00
Speed up piece relevance calculation
For ~800 pieces, this roughly cuts the run time (of this function) in half.
This commit is contained in:
parent
1729b9f29c
commit
ff99e5ac9a
@ -229,25 +229,16 @@ QString PeerInfo::connectionType() const
|
|||||||
void PeerInfo::calcRelevance(const Torrent *torrent)
|
void PeerInfo::calcRelevance(const Torrent *torrent)
|
||||||
{
|
{
|
||||||
const QBitArray allPieces = torrent->pieces();
|
const QBitArray allPieces = torrent->pieces();
|
||||||
const QBitArray peerPieces = pieces();
|
const int localMissing = allPieces.count(false);
|
||||||
|
if (localMissing <= 0)
|
||||||
int localMissing = 0;
|
|
||||||
int remoteHaves = 0;
|
|
||||||
|
|
||||||
for (int i = 0; i < allPieces.size(); ++i)
|
|
||||||
{
|
{
|
||||||
if (!allPieces[i])
|
m_relevance = 0;
|
||||||
{
|
return;
|
||||||
++localMissing;
|
|
||||||
if (peerPieces[i])
|
|
||||||
++remoteHaves;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (localMissing == 0)
|
const QBitArray peerPieces = pieces();
|
||||||
m_relevance = 0.0;
|
const int remoteHaves = (peerPieces & (~allPieces)).count(true);
|
||||||
else
|
m_relevance = static_cast<qreal>(remoteHaves) / localMissing;
|
||||||
m_relevance = static_cast<qreal>(remoteHaves) / localMissing;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
qreal PeerInfo::relevance() const
|
qreal PeerInfo::relevance() const
|
||||||
|
Loading…
Reference in New Issue
Block a user