我们遇到了的性能问题
QTableView
。
用例
:
-
用户希望能够打开多达10-30个带有表格数据的窗口(我们通过互联网接收数据)
-
每个表可以有
0到13000行
关于
100列
具有自己的筛选和排序参数
-
表中的数据可以经常更新(每行可以有
每秒100-1000次更新
)
我们已经做了什么:
-
在分离的线程中接收和处理(排序/过滤)的所有数据。
-
QTableView
具有的更新限制
60帧/秒
。这是通过
数据已更改
只为视口发出信号,只为更改的单元格发出信号。
问题
:
即使在探查器(英特尔VTune)中进行了所有优化,我们也会看到以下20个打开窗口的图片:
从图中可以看出,主线程70%以上的时间都被渲染所占用
QTableView(QWidgetPrivate)
。
同时,应用程序对用户操作的响应能力显著降低。
测试是在功能强大的硬件上进行的——英特尔酷睿i7-12700KF,带ssd和64 Gb RAM。
有人知道如何加快QTableView的渲染速度吗?
也许唯一的方法是使用绘画覆盖的自定义视图实现?