Я попытался профилировать мою программу, которая является файловым загрузчиком. Я использую 5 QNetworkRequest
для повышения скорости передачи, все они подключаются к одному и тому же слоту readyRead()
.Уменьшение стоимости процессора readyRead() при использовании высокоскоростного интернет-соединения
Я использую QMap для буферизации этих байтовых массивов.
Когда скорость загрузки достигает, например, 5 Мбайт/с, я обнаружил, что стоимость процессора значительно возросла, почти 100%, readyRead()
звонил 30 раз в секунду.
Есть ли какие-либо предложения по этому вопросу, например, могу ли я позволить QNetworkReply буферировать его io-устройство, уменьшить количество испускаемых сигналов?
UPDATA
Я сделал некоторый вывод отладки в readyReady(): (reply
здесь был литым от отправителя())
qDebug() << "Got: " << reply->readAll().length() << " bytes";
И около 30 вывода в секунду, каждый из которых содержит 1500 байт
Можете ли вы показать свой код 'readReady'? 30 вызовов/сек не кажется действительно огромным. – Mat
@Mat https://github.com/CaledoniaProject/Transf0r-Mini/blob/master/downloader.cpp#L406 – daisy