Java 如何提高jface treeviewer的扩展性能?
我有一个拥有7000多个节点的JFace treeviewer,当我在根元素上执行expand all时,展开大约需要2分钟 我尝试调用Java 如何提高jface treeviewer的扩展性能?,java,swt,eclipse-rcp,jface,treeviewer,Java,Swt,Eclipse Rcp,Jface,Treeviewer,我有一个拥有7000多个节点的JFace treeviewer,当我在根元素上执行expand all时,展开大约需要2分钟 我尝试调用expandAll()和expandToLevel(Object,level),但性能仍然保持不变 有没有办法在更短的时间内扩展树 你想一次把整棵树都展开吗?您研究过使用吗?不完全是整个树,但根据节点的选择,我有一个处理程序,它将调用expandToLevel(),即使是这个选择的节点,如果它有大量的子节点,也需要时间。在创建树查看器时,我尝试使用SWT.VIR
expandAll()
和expandToLevel(Object,level)
,但性能仍然保持不变
有没有办法在更短的时间内扩展树 你想一次把整棵树都展开吗?您研究过使用吗?不完全是整个树,但根据节点的选择,我有一个处理程序,它将调用
expandToLevel()
,即使是这个选择的节点,如果它有大量的子节点,也需要时间。在创建树查看器时,我尝试使用SWT.VIRTUAL
,但性能仍然保持不变。这是正确的方法吗?您是否对SWT.VIRTUAL使用了ILazyTreeContentProvider
?虚拟本身没有任何作用。即使这样,树查看器的性能也很差,因为需要分配太多的内存。当我在展开之前使用setRedraw(false),然后在展开之后将其设置为setRedraw(true)时,我看到了70%的改进。可以找到相关文章,我想在树展开时显示ProgressBar
,但ProgressBar
不显示进度(在起点卡住),但树在后台展开。树扩展完成后,进度条将关闭。我唯一关心的是为什么ProgressBar
没有显示进度(在起始点卡住)。我使用了Display.getDefault().asynceec()
和Display.getDefault().syncExec()