Openlaszlo應用初始化效能優化過程

2021-04-12 22:17:30 字數 1368 閱讀 1373

在開發openlaszlo應用過程中,往往考慮的是功能是否能正常實現,除了遵守openlaszlo開發規範外,對效能方面考慮的比較少,但是隨著應用規模的增加,到了後期測試的時候就會發現效能問題已經很嚴重了,這時要對系統進行效能調整,這是openlaszlo開發過程中不可缺少的一部分。

系統未優化前,初始化時間6.37秒(含debug視窗),主程式總共有10個對話方塊視窗(modaldialog),**總行數近千行。

第一階段:初步優化

1。將所有的modaldialog設定其initstage="defer"

初步優化後初始化時間為2秒

2。當主題資料取來後,進行初始化themetreedialog:

canvas.themetreedialog.completeinstantiation();

3。在所有操作按鈕上新增對應的視窗初始化宣告:

canvas.adddirdialog.completeinstantiation();

...

4。視窗內開啟過濾器設定視窗時,進行初始化:

canvas.addconditiondialog.completeinstantiation();

5。單擊**行開啟修改過濾視窗時,進行初始化:

canvas.filtermodwin.completeinstantiation();

優化結果:

系統在2.09秒之內初始化完成(含debug視窗),不包括debug視窗的初始化時間與包括時非常接近,但是包含debug的swf檔案尺寸要大142k。

所有的視窗延遲初始化設定完成,進行測試發現,當對話方塊內容較少時,初始化過程非常短暫,但是過濾器設定視窗的初始化過程稍微長點在1秒左右,但是初始化一次以後,再開啟就非常快,由此可見openlaszlo的初始化過程只進行一次,不會重複進行。

此外,這種利用開啟視窗的前夕來初始化對話方塊的方法還有侷限性,如果視窗內容比較多,那麼初始話

過程足以造成相應遲鈍,造成體驗不好,還應該進行繼續探索。

第二階段:深度優化

經過仔細分析發現,在獲取遠端資料過程中有少許間隙時間,可以利用這個間隙來初始化比較大的modaldialog,選擇其中乙個只獲取一次資料的dataset來初始化過濾器視窗,經過反覆測量初始化時間,認定該步優化後的應用初始化時間與上乙個過程時間一致。

去掉原來加在按鈕上的初始化過濾器視窗宣告,完成整個優化過程。

調整過程原則總結:

1。當前不顯示的視窗不在系統初始化時生成

2。只在需要的時候才生成視窗或者檢視

3。充分利用事件進行completeinstantiation

4。充分利用系統閒暇時間 

2 應用初始化

angularjs應用引導過程有3個重要點 注入器 injector 將用於建立此應用程式的依賴注入 dependency injection 注入器將會建立根作用域作為我們應用模型的範圍 angular的自動初始化發生在兩個時機 建立應用所需的injector 依賴注入 如果你想在初始化階段擁有更...

初始化 指定初始化

id alloc 物件的誕生過程,主要是從作業系統獲得一塊足夠大的記憶體,以存放該類的全部例項變數,並將其指定為存放記憶體物件的實力變數的位置。alloc方法同時將這塊記憶體全部設定為0。結果是 bool變數初始化為no,所有的int型別變數為0,float變數為0.0,所有的指標為nil.obje...

初始化 1 預設初始化 列表初始化

初始化的基本概念 事實 初始化和賦值是兩個完全不同的操作。初始化,是建立變數時賦予其乙個初始值。賦值,是把物件的當前值擦除,用乙個新值代替。列表初始化 p39 作為c 11新標準的一部分,用花括號 來初始化變數得到了全面應用。出於某些原因,這種初始化的方式叫做列表初始化。現在,無論是初始化物件還是某...