我试图分析我的程序,这是一个文件下载程序.我使用5 QNetworkRequest来提高传输速度,它们都连接到同一个readyRead()插槽.
我使用QMap来缓冲那些字节数组.
当下载速度达到例如5 MiB / s时,我发现CPU成本显着上升,接近100%,readyRead()每秒调用30次.
有什么建议吗,例如我可以让QNetworkReply缓冲其io设备,减少发出的信号量吗?
UPDATA
我在readyReady()中做了一些调试输出:
(这里的回复来自发件人())
qDebug()<< “得到了”<< reply-> readAll().length()<< “字节”; 每秒大约30个输出,每个包含1500个字节
最佳答案 快速查看代码后我有一个提示.您正在使用QByteArray :: append成员(downloadBuffers),该成员为附加数据重新定位内部缓冲区.如果您能够预测每个下载缓冲区中将存储多少数据,那么请使用具有确切数据量的QByteArray :: reserve.如果你不能,你可以简单地保留,即1mb,并且每次你的下一次追加将超过当前的QByteArray :: capacity时,预留内存为1mb.例如,您可以为每个缓冲区保留downbufferSize.这是一个轻微的优化,但应该给你一些时间