簡體   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