插入 WStandardItemModel 太慢
我正在开发一个基于 WT 的应用程序。
我们遇到了性能问题,因为它必须在与 WStandardItemModel 关联的 WTableView 中显示大量数据。
对于表中添加的每个新项目,它都会:(
model->setData( row, column, data )
这种情况发生了几千次)。
有什么办法可以让它更快吗?还有其他方法可以在表中添加数据吗?
生成数据可能需要 2 秒,显示数据可能需要几分钟......
I am working on a application built uppon WT.
We have a performance problem, as it must display a lot of data in a WTableView associated with a WStandardItemModel.
For each new item to be added in the table it does:
model->setData( row, column, data )
(which happens a few thousand times).
Is there some way to make it faster? some other way to add data in the table?
it can take 2 seconds to generate the data and several minutes to display it ...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
WStandardItemModel 是一种易于使用的通用模型,但对于非常大的模型来说并不是最佳选择。尝试专门化一个 WAbstractTableModel;您只需要重新实现三个方法,就可以从数据所在的位置读取数据,或者即时计算数据。
视图需要几分钟才能显示是不正常的。我已经在具有数千个条目的表上使用了视图,没有出现性能问题。您的系统是否由于(非常大的)WStandardItemModel 中浪费的内存而进行交换?
WStandardItemModel is a general-purpose model that is easy to use, but it's not optimal for very large models. Try to specialize a WAbstractTableModel; you only need to reimplement three methods and you can read your data from wherever it resides, or compute it on the fly.
It's not normal that a view takes minutes to display. I've used views on tables with many thousands of entries without performance problems. Was your system swapping because of the memory wasted in a (extremely large) WStandardItemModel?