我有 2 个 A 和 B views
,每个都有一个treeViewer
。B 在 A view
中selectionChanged
树listener
。所以每次我在 A 中选择一个tree
项目时,selectionChanged
操作是:
1- setInput
至 tree
B
2-应用过滤器
3-扩展所有元素
这里的问题是,每次我单击View
A 中的树项目时,View
B 显示树项目所需的时间每次在树 A 中相同选择都会增加,并且项目每次显示得更慢。
selectionChanged
操作的哪一部分可能会导致此性能问题!?
经过一番调查,我发现TreeViewer.expandAll()
的方法每次都会导致这么大的延迟。这是一个Eclipse
问题还是我应该修改它?
性能错误很难捕获。 在执行这些操作时,请尝试观察系统的 CPU、磁盘活动和内存使用情况。 检查代码以查看是否有任何未正确初始化的集合。
另外,尝试安装一些分析器,我建议YourKit Profiler它有1个月的试用版,我认为这足以发现您的问题。它有很多很棒的功能,比如与 eclipse 集成,以及直接从分析器进入问题所在。当我在表现上挣扎时,帮助了我很多。