微軟通過.NET Native為Windows Store應用提速

jopen 10年前發布 | 6K 次閱讀 微軟

  英文鏈接:Microsoft Speeds Up Windows Store Apps with .NET Native

  .NET Native 是微軟的一次嘗試,旨在降低 Windows Store 應用的啟動時間和內存占用。

  自從去年 11 月份,有人發現 Windows Store 應用的啟動速度有了大幅提高后,對該項目的猜測就已經開始了。在微軟內部,.NET Native 叫做“項目N”,它使用微軟 C++ 基礎設施,將托管代碼預編譯為原生代碼,從而大幅提升 .NET 應用的性能。這項技術與 NGen(Native Image Generator)或為 Store 應用進行動態編譯是不同的。

  .NET Native 工具鏈最初生成 MSIL,然后由 C++ 優化器處理并生成 MDIL(依賴于機器的中間語言),.NET Native 團隊的項目經理 Mani Ramaswamy 這樣說道。他在 Channel 9 的訪談中提供了很多技術細節。在該訪談中,開發主管 Shawn Farkas 介紹,原生應用會靜態地鏈接到只有幾百 KB 大小的 Mrt100.dll。Mrt100.dll 代表一個最小化的 CLR,為靜態編譯進行了重構和優化。因此,應用程序啟動時將運行于這個最小化的 CLR 之上,不會加載整個 .NET 運行時,不會涉及任何 JIT 編譯。

  應用程序仍然可以使用 dynamic 來訪問在運行時才能決定其類型的對象。Ramaswamy 說,這是在代碼優化階段,保留所有可能在運行時訪問的類型時實現的。此外,仍然還可以使用標準的后臺垃圾回收。

  這些優化將應用的啟動時間縮短到原來的 60%。.NET Native 目前為預覽版,并且面向的是 Windows Store 應用,但 .NET Native 團隊希望將范圍擴大到普通的 .NET 桌面應用。

  對于 .NET 開發者來說,沒有什么改變。在應用程序級別沒有引入抽象機,整個開發調試的體驗也保持一致。得到改變的是構建,需要為特殊的硬件平臺生成特殊的構建版本(目前已經支持 ARM 和 x86-64bit,x86-32bit 也即將支持)。優化后,構建時間可能要比原來多1-2 分鐘。

  目前并不是一切都十分順利。MSDN 有一節專門介紹用 .NET Native 編譯應用程序,其中一個頁面介紹將應用遷移到 .NET Native。兩者在以下方面存在一些差別:運行時、處理動態編程和反射、大量不支持的場景和 API 以及 Visual Studio。

  要想使用原生代碼,必須安裝 Visual Studio 2013 Update 2 RC 和.NET Native SDK

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