.NET Native:C++的性能 C#的產(chǎn)能?
2013 年,微軟針對 Visual Studio 2013 提出了“Project N”項(xiàng)目,在此次 Build 大會(huì)上,其面紗正式揭曉,它就是 .NET Native。在微軟 MSDN 官方博客上,Subramanian Ramaswamy 和 .NET Native 團(tuán)隊(duì)高級項(xiàng)目經(jīng)理 Andrew Pardoe 對 .NET Native 預(yù)覽版進(jìn)行了詳細(xì)的介紹。
.NET Native
.NET Native 可以將 C# 代碼編譯為本地機(jī)器碼。據(jù)博客介紹,.NET Native 可以優(yōu)化所有的 Windows Store 應(yīng)用。使用 .NET Native 編譯 Windows Store 應(yīng)用程序,應(yīng)用啟動(dòng)速度將加快 60%,并且內(nèi)存占用更小,這主要得益于開發(fā)團(tuán)隊(duì)優(yōu)化 .NET Native 運(yùn)行時(shí)(CLR 的一個(gè)重構(gòu)和優(yōu)化)和使用先進(jìn)的 Microsoft VC++ 優(yōu)化器后端。
該預(yù)覽版允許開發(fā)者測試和編譯應(yīng)用程序,此外,最令開發(fā)者興奮地是,使用 .NET Native 不僅會(huì)讓應(yīng)用擁有 C++ 般的性能表現(xiàn),還可以實(shí)現(xiàn) C# 般的生產(chǎn)力。
目前,.NET Native 預(yù)覽版支持 Windows Store 應(yīng)用,開發(fā)者可以使用該版本構(gòu)建基于 ARM 和 x86 架構(gòu)(很快會(huì)支持 x86)的應(yīng)用。不久,.NET Native 開發(fā)團(tuán)隊(duì)還會(huì)提供跨平臺的一致體驗(yàn),并且將會(huì)繼續(xù)完善和提升 .NET Native 的應(yīng)用范圍。
通過與 Visual Studio 結(jié)合,.NET Native 將會(huì)提供***的 .NET 開發(fā)體驗(yàn)給用戶,用戶還將繼續(xù)享有編輯/編譯/調(diào)式等開發(fā)功能及體驗(yàn)。
據(jù)微軟提供的 FAQ 獲知,目前 .NET Native 預(yù)覽版只支持 C# 語言,用 .NET Native 編譯的程序?qū)⒆鳛楠?dú)立的原生編譯代碼部署到目標(biāo)機(jī)器上,無需再安裝 .NET Framework。
目前,微軟已經(jīng)用 .NET Native 開發(fā)了一些 Windows Store 甲方應(yīng)用,這些應(yīng)用包括 Wordament、 Fresh Pain。
.NET Native 預(yù)覽版下載地址: http://msdn.microsoft.com/en-US/vstudio/dotnetnative ,目前可以安裝在 Visual Studio 2013 Update 2 RC 上。目前,微軟官方還未告知何時(shí)發(fā)布 .NET Native 正式版本。
使用 .NET NativeToolchain 編譯應(yīng)用
項(xiàng)目加載后,你可以啟用 .NET Native 編譯器,前提是已經(jīng)把應(yīng)用針對 x64 或 ARM 架構(gòu)進(jìn)行了配置,此外,由于 .NET Native 編譯為本地代碼,所以你得指定一個(gè)真實(shí)的機(jī)器類型來代替 CPU。具體步驟:
開發(fā)者們激情重燃
微軟此次推出 .NET Native 預(yù)覽版,讓開發(fā)者在 .NET 平臺上又看到了希望,開發(fā)者們的熱情被再一次燃起,引起了無數(shù)開發(fā)者的熱烈討論,筆者搜集了一些,整理如下:
陳宇:
技術(shù)上,.NET Native 純粹是個(gè)優(yōu)化。商業(yè)上,.NET Native 的靜態(tài)鏈接,讓微軟可以進(jìn)一步拉攏應(yīng)用開發(fā)者,給他們提供大量方便易用的開發(fā)框架,而不用擔(dān)心普通用戶的機(jī)器上裝滿了各式各樣的框架,影響體驗(yàn)了。這次微軟的 .NET Native 有兩個(gè)亮點(diǎn):
一個(gè)是云編譯。也就是開發(fā)者提交的是虛擬機(jī)代碼,用戶直接下載自己設(shè)備可用的機(jī)器碼。不像 Mono 要手動(dòng)編譯,這對用戶和開發(fā)者來說,都很方便。
另一個(gè)是,因?yàn)樗俣取⒖臻g的限制都不存在了,云編譯器可以比即時(shí)編譯 JIT,比 ART 的安裝時(shí)編譯,做更多更好的優(yōu)化。微軟的 Visual C++ 做了這么多年,應(yīng)該有足夠的技術(shù)儲(chǔ)備。備注(本段文字摘自知乎網(wǎng))。
感覺 .NET Native 比起以前***力的地方在于能夠做出“封閉世界的假設(shè)”并且放心做諸如 class hierarchy analysis 來做優(yōu)化,而并不是說因?yàn)樗昧?VC++ 的編譯器后端所以就快——要知道原本 CLR 的 x64 Server JIT 也是源自 VC++ 的后端… 話說C# 的語言特性本來就比 C++ 更好優(yōu)化,例如別名分析會(huì)好做很多。(來自新浪微博)
總體來說,微軟從 Xamarin 那邊學(xué)到了不少。.NET Native 源自 AOT,但是優(yōu)化更好。(來自新浪微博)
寫在***
針對 .NET 平臺,微軟給開發(fā)者帶來的震撼不只是發(fā)布了 .NET Native,在 2014 Builid 大會(huì)上,微軟提出了“ The Next Generation of .NET”。.NET 團(tuán)隊(duì)構(gòu)建了一些新技術(shù)來擴(kuò)展 .NET 核心功能,努力提升應(yīng)用程序和用戶體驗(yàn),發(fā)布了一系列產(chǎn)品:
- .NET Native
- .NET 編譯平臺 Roslyn,并開源
- 下一代 JIT CTP3、“RyuJIT”,包含對 SIMD 的支持
- 統(tǒng)一 Visual Studio 2013 Update 2 可移植類庫和類庫
- 提升 Visual Studio 2013 Update 2 性能和診斷中心
- .NET 移動(dòng)服務(wù)
- “Orleans”項(xiàng)目
微軟的這些舉措足以說明對開發(fā)者的重視,相信,未來的微軟也不會(huì)讓開發(fā)者們失望。
文章部分內(nèi)容翻譯自 MSDN 博客。
來源:騰訊科技