gpt4 book ai didi

qt - 使用高速互联网连接时降低 readRead() 的 cpu 成本

转载 作者:行者123 更新时间:2023-12-01 22:28:54 26 4
gpt4 key购买 nike

我尝试分析我的程序,它是一个文件下载器。我用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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com