首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QStringList::append()性能差

QStringList::append()性能差
EN

Stack Overflow用户
提问于 2017-04-08 09:28:01
回答 1查看 448关注 0票数 1

在我的项目中,我有一个递归迭代QTreeView模型的函数。在某些情况下,我将值附加到存储在每个项的Qt::UserRole中的QStringList

问题是..。递归扫描做了大量的检查,从JSON文件读取,从磁盘导入图标等等,然而,所有这些都比简单地将1或2个字符串附加到模型中约5%的项目的QStringList快很多。

我做了一些基本的分析,发现如果我注释掉所有对QStringList::append()的调用,而把所有疯狂的JSON读取、图标设置、颜色更改等都留在里面,速度会比我把它们留在里面的速度快3倍。而且它明显慢了很多。慢得令人沮丧。

因此,我决定将范围缩小到只对大约5%的项目进行一次QStringList::append()调用。以下是代码示例:

代码语言:javascript
复制
QStringList rightClickList = mainItem->data(Qt::UserRole+8).toStringList();
rightClickList.append("customName");//comment this out and it runs 3x faster 
                                    //than allllll the recursive scanning combined!
mainItem->setData(rightClickList, Qt::UserRole+8);

我估计在一个给定的模型中,大约有5%的项目有任何QStringList的变化。剩下的就没人管了。QStringList类型真的那么慢吗?如果是这样,你会推荐什么替代方案?

耽误您时间,实在对不起!

EN

回答 1

Stack Overflow用户

发布于 2017-04-08 09:46:17

  • 这可能是内存压力:随着基于数组的存储的增长,运行时会停止并分配存储以跟上。
  • 这也可能是递归的副作用;如果问题仍然存在,请尝试使用
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43289228

复制
相关文章

相似问题

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