WP7應用運行效率之謎:流暢的代價很高

fmms 12年前發布 | 14K 次閱讀 Windows Phone 7

        多開發過 Android 的程序員,表示 WP7 比 Android 流暢,再給你大家透露些微軟為了掩蓋 .Net 運行緩慢的例子。

        1. WP7 SDK 提供的默認工程,都有一個啟動的封面圖片,默認文件名為 SplashScreenImage.jpg 這個圖片,一般系統自帶的應用為 EXE 格式由于使用 PE 加載器以 Native 直接處理 ARM 指令自然快,而第三方軟件一般進入時都有一個歡迎屏就是為了掩蓋托管語言的高效開發,低效運行等問題。

        2. 同時在很多方面微軟 WP7 優化的并不是說比 Google 的 Android 好,微軟限制了后臺應用的運行,比如最多不會超過 5 個目前在 WP7.5 Mango 上,所謂的第三方后臺運行是通過 Background Agent 實現的,分為即時和資源敏感型,如果你的應用需要長期運行,就必須將這部分邏輯封裝為一個 Dll 最終由 WP7 系統代理運行,和你的主應用其實工作在不同的空間,因為你的應用和后臺代理雖然均為 Dll 但仍然獨立。你的應用可能被結束了,而后臺代理那個 dll 可能仍然還在工作,但是限制十分苛刻,比如說內存占用不能超過 5MB,否則隨時被結束掉,很多 API 無法使用等。Android 有時候不流暢主要由于小 RAM 的設備了,過多的后臺應用導致的,當然也有很多劣質的應用拖了 Android 的后腿。

        3. 編碼處理,WP7和 Android 應用對應 xap 和 apk 雖然均為 zip 壓縮,但 Android 在清單文件上做了二進制的編譯達到了性能提升,而 wp7 仍然為 xml 原本的 xaml 文件,除了運行效率低下外,應用的安全性存在著很大的隱患。不過由于 WP7 軟件開發較簡單,一般如果不是游戲類應用或算法涉及不敏感的可以不用考慮代碼混淆,畢竟 .Net 的門檻太低了。同時 Google Dalvik VM 這個 Java 虛擬機上的類庫功能強大型,至少是目前 WP7.5 Silverlight4 的 20 倍還多在功能上。隨著 WP7 功能的增加,可能 Java VM 比 .NET Runtime 效率更高。

        4. 由于 WP7 應用過多的依賴于 Silverlight,內部的 Uri 傳遞竟然使用字符串這樣的形式,同時界面 .xaml 文件和 cs 或 vb 文件實現了 MVC,但在 Android 上我們通過 Intent 可以封裝復雜的類型甚至是多維的字節數組,這也導致了代碼混淆時 Java 依賴于 Package Name,而 WP7 依賴于絕對的路徑,產生更復雜的情況。

        5. WP7 運行的高效其實得益于微軟嚴格的限制,就是界面要十分簡單,無法實現復雜的效果,如果 Android 運行同樣的簡單界面性能會不俗,而 Android 當 CPU 和 RAM 于 WP7 相同時,基本上以臨界點 1GHz 的 A8 和 512MB 的 RAM 或更高來看,同樣的處理量 Android 遠比 WP7 高效,在 UI 部分 Silverlight 的 Bug 就更多了,內部的實現方面其實比 Android 更臃腫復雜,很多國內用戶感覺 Android 體驗差,主要是國產山寨機或低端機使用 ARM11 這樣的 CPU,小于 512MB 的 RAM 還捆綁了一堆垃圾后臺應用造成的。

        總之,微軟今天仍然無視開發者體驗,僅僅憑借 IDE 方面 VS2010 比 Eclipse 有優勢,實在是太坑爹了,不苛求 Mac OS 版的 WP7 SDK,連 WinXP 都無法很好的兼容,微軟的層層限制早晚會讓開發者感覺這個系統不爽程度不亞于 iOS。

WP7應用運行效率之謎:流暢的代價很高

來自: www.wpdever.com

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!