繁体   English   中英

我应该怎么做才能使用MVC加快慢速的GWT应用程序

[英]What should I do to speed up a slow GWT app using MVC

我已经更改了我的应用程序以使用MVC,但它的运行速度相当缓慢。

描述:

  • 该应用程序有5个组合,每个组合代表不同的数据,并不总是显示
  • 该应用程序正在使用MVC,更新发生时,我会将模型传递给每个复合材料。
  • 每次收到通知时,我都在重建一棵树(和所有树项目),但是,只有其中一个树项目已更改,因此这可能是浪费。
  • 由于该应用程序的风格,我什至必须针对一些无关紧要的事情使用notify(),例如更改文本框中的文本或选择菜单,因为我有一个已保存的图标,只要在树Item中进行任何更改,该图标都会变为未保存。
  • 所有组合都实现相同的Observer接口,因此所有组件都在每个notify()上进行更新。

有人可以给我一些有关加快该应用程序速度的提示。 上面哪一个可能比其他CPU占用更多的CPU,例如,是否要在每个notify()上使用少于20个项目重建一棵树,这将占用那么多CPU时间,我是否需要重新设计它? 我应该创建一个单独的接口(如SaveStateChanged)仅通知树,还是浪费时间。

当应用程序变慢时,大多数时间通常不花在自己执行JavaScript计算上(例如,我不相信,仅仅调用很多观察者是一个问题-这取决于他们的工作!)。 通常,速度慢是由诸如多余的布局之类的东西引起的(例如,当每个观察者引起布局调用时)。 有时,很多DOM操作也可能是一个问题(主要是Internet Explorer)。

我建议您对Speed Tracer进行一些操作,尤其是冗余布局示例 如果这不是您应用程序中的特定问题,那么您应该能够采用示例中所示的类似方法来进行跟踪。 使用markTimeline("String")可以使代码的特殊部分清晰地显示在Speed Tracer的图形中。

您需要采取的第一步是准确地找出发生性能问题的位置。 您已经确定了一些不错的候选对象,但是您希望通过使用冷硬统计来支持。

您可能会发现您只需要解决以上问题之一,或者可能完全有另一个难点

我建议您放弃Observer界面,转而使用更细粒度的内容。 查看Swing中的MVC架构,其中的JTree与TreeModel关联,并实现TreeModelListener接口以听取对模型的更改。 TreeModelListener接口具有模型调用的特定方法,以指示节点正在更改,正在从树中添加或从树中删除。 此外,它还有一个TreeModelEvent,它提供有关受影响的节点的更多数据。 如果模型准确地告诉您发生了什么变化,您将有更大的空间来从侦听器实现中做出明智的反应。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM