【问题标题】:JFace TableViewer vs TreeViewer - performanceJFace TableViewer 与 TreeViewer - 性能
【发布时间】:2015-09-23 15:03:00
【问题描述】:

有没有其他人注意到TreeViewerTableViewer 之间存在巨大的性能差异(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


【解决方案1】:

为了提高性能,请尝试使用ILazyTreeContentProvider

另请参阅此帖子:Eclipse RCP - ILazyTreeContentProvider implementation is unexpectedly eager

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 2021-05-13
    • 2011-12-28
    • 2011-03-05
    • 1970-01-01
    • 2022-06-13
    相关资源
    最近更新 更多