对于我在使用大型SWT表的RCP应用程序中追逐一段时间的问题,这更像是一个答案.
问题是SWT Table.remove(int start,int end)方法的性能.它提供了非常糟糕的性能 - 在我的Windows XP上每100个项目大约50毫秒.但真正的节目制作者是在Vista和Windows 7上,删除100个项目需要5秒钟!查看表格的源代码表明,在这次调用中有大量的窗口事件飞来飞去.这使得窗口系统瘫痪.
解决方案是在这次通话中隐藏该死的东西:
table.setVisible(false);
table.remove(from, to);
table.setVisible(true);
Run Code Online (Sandbox Code Playgroud)
这确实很奇怪 - 在XP和Windows7上删除500个项目需要大约15毫秒,这只是打印我使用的时间戳的开销.
好:)