Browse Source

Avoid unnecessary memory writes

Before this change, qbt spent ~1% in these two functions, now it
only spends about ~0.5% in my naive testing.
adaptive-webui-19844
Chocobo1 5 years ago
parent
commit
24cd7c3611
No known key found for this signature in database
GPG Key ID: 210D9C873253A68C
  1. 9
      src/base/bittorrent/peerinfo.cpp
  2. 8
      src/base/bittorrent/torrenthandle.cpp

9
src/base/bittorrent/peerinfo.cpp

@ -208,11 +208,10 @@ qlonglong PeerInfo::totalDownload() const @@ -208,11 +208,10 @@ qlonglong PeerInfo::totalDownload() const
QBitArray PeerInfo::pieces() const
{
QBitArray result(m_nativeInfo.pieces.size());
int i = 0;
for (const bool bit : m_nativeInfo.pieces)
result.setBit(i++, bit);
for (int i = 0; i < result.size(); ++i) {
if (m_nativeInfo.pieces[i])
result.setBit(i, true);
}
return result;
}

8
src/base/bittorrent/torrenthandle.cpp

@ -1202,10 +1202,10 @@ QVector<PeerInfo> TorrentHandle::peers() const @@ -1202,10 +1202,10 @@ QVector<PeerInfo> TorrentHandle::peers() const
QBitArray TorrentHandle::pieces() const
{
QBitArray result(m_nativeStatus.pieces.size());
for (int i = 0; i < m_nativeStatus.pieces.size(); ++i)
result.setBit(i, m_nativeStatus.pieces.get_bit(LTPieceIndex {i}));
for (int i = 0; i < result.size(); ++i) {
if (m_nativeStatus.pieces[LTPieceIndex {i}])
result.setBit(i, true);
}
return result;
}

Loading…
Cancel
Save