【发布时间】:2015-09-23 15:03:00
【问题描述】:
有没有其他人注意到TreeViewer 和TableViewer 之间存在巨大的性能差异(TreeViewer 更快)。
我有一个包含 CellEditors(带有 EditingSupport)的表格,大约有 30 列,当我滚动它时,尤其是水平滚动时,它非常慢。多单元格选择也很慢。
我将表格更改为树(只是将主要的TableViewer 更改为TreeViewer 和特定的类),性能得到了巨大的提升。
这是为什么?表和树都具有相同的结构,实现和扩展相同的类,树是具有更多功能的类。这在较新版本的 eclipse 中是否已修复,或者我应该将我的表迁移到没有孩子的树上?
附:我在 win7 上使用 SWT 和 JFace 3.7。
提前致谢。
【问题讨论】:
-
也许添加 SWT.VIRTUAL 样式会提高 TableViewer 的性能?见这里:JFace’s Viewers Performances
-
好吧,即使它确实有所改善,问题仍然存在;考虑到两者具有相同的样式、提供程序等,为什么树比表快。
-
树和表将使用不同的底层原生控件,这可能与此有关。
-
SWT 使用本机控制,这些控制会有所不同。在不同的操作系统上也可能相反。如果您正在处理大型表/树,我建议您不要使用任何一个,而是使用eclipse.org/nattable。我将它用于一个更大的项目,除了它的复杂性之外,它非常好和快速。
标签: java swt eclipse-rcp jface