我已经将我的应用程序更改为使用MVC并且速度非常慢。
说明
有人可以给我一些提示,告诉我应该做些什么来加速这个应用程序。上面哪一个可能比其他人更耗费CPU,即正在用<重建树。每个notify()上的20个项目将占用大量的CPU时间,我是否需要重新设计它?我应该创建一个单独的界面,例如SaveStateChanged,它只会通知树,或者这只是浪费时间。
答案 0 :(得分:4)
当应用程序变慢时,大多数时间通常不会花费自己执行JavaScript计算(例如,我不相信,只是调用很多观察者是一个问题 - 它取决于他们做了什么!)。通常,冗余是由冗余布局(例如,当每个观察者引起布局调用时)引起的。有时,许多DOM操作也可能是一个问题(主要是使用Internet Explorer)。
我建议您使用Speed Tracer,尤其是redundant layout example。如果这不是您的应用程序中的特定问题,您应该能够采用与示例中所示类似的方法来跟踪它。使用markTimeline("String")
可以在Speed Tracer的图表中清楚地显示代码的特殊部分。
答案 1 :(得分:0)
您需要采取的第一步是准确隔离性能问题发生的位置。你已经确定了一些很好的候选人,但是你会想要用冷酷的统计数据来支持它。
您可能会发现您只需要解决上述问题之一,或者可能完全存在另一个问题
答案 2 :(得分:0)
我建议你摆脱Observer界面,转而采用更精细的东西。查看Swing中的MVC体系结构,其中JTree与TreeModel关联,并实现TreeModelListener接口以听取模型的更改。 TreeModelListener接口具有模型调用的特定方法,用于指示节点在树中更改,添加或删除。此外,它还有一个TreeModelEvent,它提供有关受影响的节点的更多数据。如果模型准确地告诉您更改的内容,您将有更多的空间来智能地从侦听器实现中做出反应。