【发布时间】:2010-04-20 21:28:44
【问题描述】:
对于我在使用大型 SWT 表的 RCP 应用程序中追寻了一段时间的问题,这更像是一个答案。
问题在于 SWT Table.remove(int start, int end) 方法的性能。它提供了非常糟糕的性能 - 在我的 Windows XP 上每 100 个项目大约需要 50 毫秒。但真正的阻碍是在 Vista 和 Windows 7 上,删除 100 个项目最多需要 5 秒!查看 Table 的源代码可以发现,在这个调用中有大量的窗口事件飞来飞去。这让窗口系统崩溃了。
解决方案是在通话期间隐藏该死的东西:
table.setVisible(false);
table.remove(from, to);
table.setVisible(true);
这确实很神奇 - 在 XP 和 Windows7 上删除 500 个项目大约需要 15 毫秒,这只是打印出我使用的时间戳的开销。
不错:)
【问题讨论】:
标签: swt eclipse-rcp