Metro風格XAML應用程序性能技巧
微軟發布了一篇名為《Metro 風格 XAML 應用程序性能技巧》的白皮書,其中包含一些關于保持響應、確保流暢動畫、改善啟動時間、消耗較少資源等方面的建議。我們在這里進行了一些總結。
UI 相關:
- 使用后臺線程并保持 UI 線程可響應 —— 使用 async 與 await 編程;
- 避免在布局處理過程中讓布局失效;
- 使用 Windows.Storage.BulkAccess 與 Windows.Storage.StorageFolder.GetFilesAsync API 處理多文件;
- 考慮互操作時調用 WinRT API 帶來的額外開銷,尤其是在代碼熱路徑(code hotpath)上。
動畫:
- 盡可能讓動畫獨立(于 UI 線程);
- 最小化覆蓋——例如,完全折疊遮蓋的元素;使用組合元素取代分層對象;
- 若畫布中的元素不發生改變或沒有動畫效果,可以使用 CacheMode 將畫布進行緩存;
- 避免為 Web 視圖添加動畫。
啟動時間:
- 借助閃屏、啟動頁面、后臺加載數據來提高感知;
- 啟動階段盡可能地最小化待解析的 XAML;
- 優化元素數量;
- 如果沒有太大差別,可以合并程序集——加載一個大的程序集通常要比加載兩個小的程序集所花時間要少。
應用程序處理生命期:
- 在終結前進入暫停狀態——一個應用程序在終結前的暫停狀態最多可以有 5 秒的時間用于存儲它的數據;
- 只序列化和反序列化改動的數據;
- 盡可能在暫停狀態釋放盡可能多的內存;釋放文件和設備句柄。與此同時,設計時要考慮應用程序可以快速地恢復狀態;
- 將畫刷創建為 ResourceDictionary 元素以在頁面間進行重用,該做法可以提高緩存效果。
呈現數據:
- 使用 UI 虛擬化,即只創建那些靠近查看端口的對象;使用數據虛擬化,即采用小步增量的方式按需讀取大數據;
- 使用 Item 模板選擇器。
媒體:
- 盡可能使用全屏回放;
- 不要覆蓋內嵌的視頻;
- 延遲設置 MediaElement 的媒體源;
- 盡可能匹配視頻/圖像與設備之間的分辨率;
- 對于 Windows 8,微軟推薦H.264為視頻主要格式,AAC 與 MP3 為音頻推薦格式。而當需要包含短音效時(例如,在游戲中),請使用 WAV。
微軟的這篇白皮書包含了詳細的解釋與代碼示例。不過,書中并沒有提及 DirectX 與 XML 互操作方面的內容,你可以閱讀這篇文章加以了解。
查看英文原文:Performance Tips For Metro Style XAML Apps
來自:
InfoQ
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!