首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用高速互联网连接降低readyRead()的cpu成本

使用高速互联网连接降低readyRead()的cpu成本
EN

Stack Overflow用户
提问于 2012-05-25 07:01:55
回答 1查看 354关注 0票数 4

我试着分析我的程序,它是一个文件下载程序。我使用5 QNetworkRequest来提高传输速度,它们都连接到同一个readyRead()插槽上。

我使用QMap来缓冲这些字节数组。

当下载速度达到5MIB/s时,我发现CPU成本显著上升,几乎100%,readyRead()每秒调用30次。

是否有任何建议,例如,我可以让QNetworkReply缓冲它的io设备,减少发出的信号量?

UPDATA

我在readyReady()中做了一些调试输出:(这里的reply是从发送方()生成的)

qDebug() << "Got: " << reply->readAll().length() << " bytes";

大约每秒钟输出30个字节,每个包含1500个字节。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-25 08:16:16

在快速查看您的代码后,我有一个提示。您使用的是QByteArray::append成员(downloadBuffers),它为附加的数据重新分配内部缓冲区。如果您能够预测您将在每个下载缓冲区中存储多少数据,那么使用QByteArray::reserve和确切的数据量。如果不能的话,您可以只保留1mb,并且每次您的下一个追加将超过当前的QByteArray::capacity时,可以提前保留1mb内存。例如,您可以为每个缓冲区保留downbufferSize。这是一个轻微的优化,但应该给你一些时间

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10749930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档