Merge pull request #11422 from Chocobo1/buffer

Reserve memory for file data buffers
This commit is contained in:
Mike Tzou 2019-11-02 13:16:21 +08:00 committed by GitHub
commit 6da39d9279
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 3 deletions

View file

@ -3560,6 +3560,7 @@ void Session::handleTorrentResumeDataReady(TorrentHandle *const torrent, const l
// isn't cheap too.
QByteArray out;
out.reserve(1024 * 1024); // most fastresume file sizes are under 1 MB
lt::bencode(std::back_inserter(out), data);
const QString filename = QString("%1.fastresume").arg(torrent->hash());

View file

@ -1581,11 +1581,15 @@ bool TorrentHandle::saveTorrentFile(const QString &path)
#endif
const lt::entry torrentEntry = torrentCreator.generate();
QVector<char> out;
QByteArray out;
out.reserve(1024 * 1024); // most torrent file sizes are under 1 MB
lt::bencode(std::back_inserter(out), torrentEntry);
if (out.isEmpty())
return false;
QFile torrentFile(path);
if (!out.empty() && torrentFile.open(QIODevice::WriteOnly))
return (torrentFile.write(&out[0], out.size()) == out.size());
if (torrentFile.open(QIODevice::WriteOnly))
return (torrentFile.write(out) == out.size());
return false;
}