diff --git a/src/base/bittorrent/peerinfo.cpp b/src/base/bittorrent/peerinfo.cpp index 8d8c05f2a..835c85c08 100644 --- a/src/base/bittorrent/peerinfo.cpp +++ b/src/base/bittorrent/peerinfo.cpp @@ -229,25 +229,16 @@ QString PeerInfo::connectionType() const void PeerInfo::calcRelevance(const Torrent *torrent) { const QBitArray allPieces = torrent->pieces(); - const QBitArray peerPieces = pieces(); - - int localMissing = 0; - int remoteHaves = 0; - - for (int i = 0; i < allPieces.size(); ++i) + const int localMissing = allPieces.count(false); + if (localMissing <= 0) { - if (!allPieces[i]) - { - ++localMissing; - if (peerPieces[i]) - ++remoteHaves; - } + m_relevance = 0; + return; } - if (localMissing == 0) - m_relevance = 0.0; - else - m_relevance = static_cast(remoteHaves) / localMissing; + const QBitArray peerPieces = pieces(); + const int remoteHaves = (peerPieces & (~allPieces)).count(true); + m_relevance = static_cast(remoteHaves) / localMissing; } qreal PeerInfo::relevance() const