- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试分析我的程序,它是一个文件下载器。我用5 QNetworkRequest
为了提高传输速度,它们都连接到同一个 readyRead()
插槽。
我使用 QMap 来缓冲这些字节数组。
当下载速度达到例如5 MiB/s时,我发现CPU成本显着上升,接近100%,readyRead()
每秒调用 30 次。
对此有什么建议吗,例如我可以让 QNetworkReply 缓冲其 io 设备,减少发出的信号量吗?
更新数据
我在readyReady()中做了一些调试输出:( reply
这里是从 sender() 转换的)
qDebug() << "Got: " << reply->readAll().length() << " bytes";
每秒输出约30个,每个包含1500字节
最佳答案
快速查看您的代码后,我得到了一个提示。您正在使用QByteArray::append
成员( downloadBuffers
)为附加数据重新分配内部缓冲区。如果您能够预测每个下载缓冲区中将存储多少数据,则使用 QByteArray::reserve
具有精确的数据量。如果你不能,你可以简单地保留1MB,并在每次你的下一个追加将超过当前QByteArray::capacity
时逐渐保留内存1MB。 。例如,您可以预订 downbufferSize
对于每个缓冲区。这是一个轻微的优化,但应该给你一些时间
关于qt - 使用高速互联网连接时降低 readRead() 的 cpu 成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10749930/
我尝试分析我的程序,它是一个文件下载器。我用5 QNetworkRequest为了提高传输速度,它们都连接到同一个 readyRead()插槽。 我使用 QMap 来缓冲这些字节数组。 当下载速度达到
我是一名优秀的程序员,十分优秀!