自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C++的性能, C#的產(chǎn)能?!魚和熊掌可以兼得,.NET NATIVE初窺

開發(fā) 后端
.Net當(dāng)初的出現(xiàn)是因?yàn)镴ava讓人了解到計(jì)算機(jī)發(fā)展的今天,語言的產(chǎn)能重要性是高于性能的。于是微軟便出了CLR和.Net。JIT(運(yùn)行時(shí)編譯)雖然消耗了性能,卻大大增加了產(chǎn)能。但是ObjectC又告訴了大家在平板和智能手機(jī)內(nèi)存和存儲受限的情況下,機(jī)器碼編譯性能是多么重要,而且也省電,這也很重要不是嗎。

對于微軟開發(fā)者來說,每次BUILD大會都是值得期待的。這次也是驚喜滿滿,除了大眾矚目的WP8.1的發(fā)布還有一項(xiàng)會令開發(fā)者興奮的技術(shù)出現(xiàn):.NET NATIVE。下面就來詳細(xì)了解一下其為何物。

[小九的學(xué)堂,致力于以平凡的語言描述不平凡的技術(shù)。如要轉(zhuǎn)載,請注明來源:小九的學(xué)堂。cnblogs.com/xfuture]

  [[112260]]

.Net當(dāng)初的出現(xiàn)是因?yàn)镴ava讓人了解到計(jì)算機(jī)發(fā)展的今天,語言的產(chǎn)能重要性是高于性能的。于是微軟便出了CLR和.Net。JIT(運(yùn)行時(shí)編譯)雖然消耗了性能,卻大大增加了產(chǎn)能。但是ObjectC又告訴了大家在平板和智能手機(jī)內(nèi)存和存儲受限的情況下,機(jī)器碼編譯性能是多么重要,而且也省電,這也很重要不是嗎。

微軟W8出現(xiàn)是平板時(shí)代應(yīng)運(yùn)而生的,于是便出現(xiàn)了開發(fā)時(shí)的產(chǎn)能,運(yùn)行時(shí)的性能的合體:.NET NATIVE。

.NET NATIVE目的是為了生產(chǎn)上的流水線產(chǎn)出的手工產(chǎn)品,易于開發(fā),運(yùn)行時(shí)精致。

.NET NATIVE之前被稱為Project N, 它可以把C#語言編譯成機(jī)器碼native code,使之可以像C++一樣運(yùn)行。其實(shí)這樣講比較籠統(tǒng),具體是在NATIVE里微軟重寫了.NET Framework,將程序所需要的framework里的元素加進(jìn)去而其他的則不用,生成可以運(yùn)行的機(jī)器碼,最終實(shí)現(xiàn)運(yùn)行時(shí)本地機(jī)器碼,不用動態(tài)編譯,節(jié)省了內(nèi)存和空間。

這其中有個誤區(qū),很多人認(rèn)為是.NET NATIVE把C#編譯成了C++,其實(shí)并不是,C++編譯器后端接受IL作為輸入,生成MDIL。

.NET NATIVE解決了很多.NET的問題,比如.NET運(yùn)行時(shí)計(jì)算,是消耗內(nèi)存和開銷更多電量,.NET NATIVE編譯時(shí)只有用到的才會靜態(tài)鏈接,其他部分就不要了,內(nèi)存中放入的只有框架的一部分,所以內(nèi)存占用很少,電量消耗也少,很適合平板等內(nèi)存相比較小的設(shè)備。

.Net native也實(shí)現(xiàn)了云編譯,開發(fā)者提供.NET代碼,而消費(fèi)者安裝的是自己設(shè)備可以使用的機(jī)器碼.

.Net native解決了.NET 版本管理的問題。開發(fā)中最常遇到這個東西.NET 低版本不支持,或者是要支持一些低版本機(jī)器,導(dǎo)致我們開發(fā)的環(huán)境一直是以低版本.net來進(jìn)行的。.net native編譯成機(jī)器碼就不存在這種問題了。個人認(rèn)為這個是商業(yè)價(jià)值所在

據(jù)官網(wǎng),用native編譯的windows商店程序, 啟動速度加快60%,占用內(nèi)存減少將近20%。

現(xiàn)在.net native支持windows store apps,暫時(shí)不支持其他的一些.net桌面程序,WPF等。但我們可以期待以后會出現(xiàn)全盤都支持的時(shí)代。私人認(rèn)為WPF是難點(diǎn),畢竟是用了GPU。

安卓也有類似的,4.4出現(xiàn)了ART。希望有ART開發(fā)經(jīng)驗(yàn)的來一起研究進(jìn)行對比。http://www.pcpop.com/doc/0/967/967006.shtml

個人認(rèn)為出現(xiàn)的有點(diǎn)略晚,XP已經(jīng)下架了?,F(xiàn)在基本都是.net 3.5及以上了。還是以觀后效吧。

運(yùn)行時(shí)的截圖

安裝:首先需要update2.大概3G(比2013還要大)。安裝OK后。安裝.net native 下面有鏈接。

.net native preview支持windowsstore 所以建立一個windowsstore的app:

然后右鍵點(diǎn)擊windowsstore項(xiàng)目,點(diǎn)擊 enable .net native

會彈出一個說明界面:

之后點(diǎn)擊Run static native analysis 會出現(xiàn)This application is compatible with .net native code generation。

位置在release folder下:

#p#

下面有不使用.net native后release folder大?。?/span>

使用.net native后。拿掉 說明.net native網(wǎng)頁文件夾后 可以部署的文件大?。?/p>

 明顯編譯后還是小很多的。第一次使用,可能對其中文件和一些部署相關(guān)還不夠了解。有錯希望指正!。

之后會出更詳細(xì)的評測。希望大家持續(xù)關(guān)注謝謝!

假如還有問題,這個鏈接也許會解決您的疑惑:

http://msdn.microsoft.com/zh-cn/vstudio/dn642499.aspx

是否支持 F# 或 VB 或我最喜歡的語言?

此預(yù)覽版僅支持 C# 代碼,因?yàn)樗谴蠖鄶?shù)應(yīng)用商店應(yīng)用使用的 .NET 語言。但在我們拓寬工作重點(diǎn)之后,毫無疑問,我們會支持所有 .NET 語言。

此產(chǎn)品是僅與性能有關(guān),還是也允許生成針對 Win32/64 本機(jī)編譯并且不需要在目標(biāo)計(jì)算機(jī)上安裝 .NET Framework 的 C# 代碼(舉例來說)?

沒錯:.NET Native 不僅僅與性能有關(guān),而且與工作效率和一致的設(shè)備體驗(yàn)有關(guān)。利用 .NET Native,您能夠使用托管語言編寫代碼并且能夠像往常一樣上載 MSIL 包。但是,應(yīng)用將作為完全自包含的本機(jī)編譯代碼部署在最終用戶設(shè)備上(當(dāng) .NET Native 進(jìn)入生產(chǎn)時(shí)),并且不依賴目標(biāo)設(shè)備/計(jì)算機(jī)上的 .NET Framework。如您所知,.NET 應(yīng)用程序的范圍很廣。因此,我們對完整的 .NET Framework 也進(jìn)行了重大投入(例如,我們剛剛發(fā)布了  RyuJIT 的 CTP)。

設(shè)計(jì)此產(chǎn)品時(shí)考慮了哪些方案?

我們考慮過的方案是用于設(shè)備的應(yīng)用商店應(yīng)用 - 使開發(fā)人員能夠保持 .NET 和 MSIL 的工作效率優(yōu)勢并且能夠?qū)?MSIL 包上載到應(yīng)用商店,為最終用戶提供性能類似的本機(jī)代碼 (C++)(與 Windows Phone 8 類似,在云中進(jìn)行編譯)。

.NET Native 是否將取代 .NET Micro Framework 以及 C#/.NET 是否將完全可供小型設(shè)備使用?

.NET Native 當(dāng)前的重點(diǎn)是 Windows 應(yīng)用商店應(yīng)用。Micro Framework 由 Windows Embedded 團(tuán)隊(duì)交付,.NET 團(tuán)隊(duì)與他們一起攜手為客戶提供最佳服務(wù)。

開發(fā)人員預(yù)覽版是否適用于創(chuàng)建 Windows Phone 應(yīng)用和庫?

可以創(chuàng)建與 .NET Native 一起使用的通用類庫。在此預(yù)覽版中,僅 Windows 應(yīng)用商店應(yīng)用可使用 .NET Native 進(jìn)行創(chuàng)建。正在實(shí)現(xiàn)使用 .NET Native 開發(fā) Windows Phone 應(yīng)用。

此產(chǎn)品能否提高 C# 開發(fā)人員開發(fā)高度圖形化的應(yīng)用和/或游戲的體驗(yàn)?

可以。.NET Native 編譯器與 Microsoft C++ 優(yōu)化器共享部分基本代碼。

服務(wù)器/桌面應(yīng)用是否將受益于 .NET Native 和/或云中的編譯器?

桌面應(yīng)用是我們策略中的非常重要的部分。最初,我們的重心是 Windows 應(yīng)用商店應(yīng)用與 .NET Native。從長遠(yuǎn)來看,我們將繼續(xù)改進(jìn)所有 .NET 應(yīng)用程序的本機(jī)編譯。

如何進(jìn)行鏈接?框架代碼是否將編譯到應(yīng)用程序中?這將如何影響包/二進(jìn)制文件大???

是的,框架代碼將編譯到應(yīng)用程序中。對于包大小,由于大多數(shù)應(yīng)用商店應(yīng)用都有大量多媒體,因此差異不明顯。 因此,代碼大小確實(shí)會發(fā)生變化;但是,僅會將應(yīng)用使用的框架部分鏈接到應(yīng)用中。最終結(jié)果是,使用 .NET Native 編譯的二進(jìn)制文件將與執(zhí)行 NGEN 的二進(jìn)制文件處在相同的大小范圍中。 我們?nèi)詫⒀芯靠蛇M(jìn)一步減少大小差異的策略。

使用 .NET Native 編譯比使用 MSIL 編譯慢。為什么?

常規(guī)應(yīng)用開發(fā)使用 Visual Studio 中的標(biāo)準(zhǔn) MSIL/JIT 開發(fā)體驗(yàn)。只有在將應(yīng)用部署到設(shè)備才會調(diào)用 .NET Native 編譯器,在大多數(shù)開發(fā)過程完成之后,重心將轉(zhuǎn)移到應(yīng)用的優(yōu)化上。此時(shí),編譯時(shí)間與使用鏈接時(shí)間代碼生成優(yōu)化的 C++ 的差不多。

P/Invoke 有什么變化?是否會將它們優(yōu)化為標(biāo)準(zhǔn) DLL 調(diào)用?

即使對二進(jìn)制文件進(jìn)行本機(jī)編譯,但我們保留了托管代碼類型安全性(以及垃圾回收)和完整 C# 異常模型的好處。利用 .NET Native,我們還極大地優(yōu)化了互操作路徑 - 因此,盡管 P/Invoke 不會優(yōu)化為標(biāo)準(zhǔn) DLL 調(diào)用,但開銷極低,以便執(zhí)行 GC 同步和任何必需的封送。

有什么限制?此產(chǎn)品是否支持開放的泛型和反射?

.NET Native 將在進(jìn)入生產(chǎn)時(shí)支持目標(biāo)平臺支持的所有功能。由于這是預(yù)覽版,很多功能正在開發(fā)中,因此目前有一些限制。話雖如此,此預(yù)覽版中支持開放的泛型和反射(是的,甚至支持靜態(tài)編譯?。T诖祟A(yù)覽版中,編譯器具有試圖弄清運(yùn)行時(shí)需要的泛型實(shí)例化和元數(shù)據(jù)的內(nèi)置啟發(fā)機(jī)制。因此,大量的應(yīng)用有望直接運(yùn)行,而不必簡化源代碼來獲得編譯器的好處。

如何修補(bǔ)這些應(yīng)用或?yàn)檫@些應(yīng)用提供服務(wù)?

應(yīng)用的服務(wù)模式繼續(xù)保持不變。對于框架,.NET 的最新模式是自動提供庫更新。我們將繼續(xù)探索選項(xiàng);我們期待聽到您的建議和意見。

如果刪除了從未用過的方法,是否有某種方式表明某個方法(或整個類)已使用,即使從未直接調(diào)用過?

有;在此預(yù)覽版中,支持開發(fā)人員聲明某個方法(或類型)已使用,即使未直接調(diào)用(請查看運(yùn)行時(shí)指令文檔)。

下面附上一些.net native相關(guān)的鏈接:

http://social.msdn.microsoft.com/Forums/en-US/home?forum=dotnetnative

http://msdn.microsoft.com/en-US/vstudio/dotnetnative

http://blogs.msdn.com/b/dotnet/archive/2014/04/02/announcing-net-native-preview.aspx

http://channel9.msdn.com/Shows/Going+Deep/Inside-NET-Native

如果喜歡,請關(guān)注和推薦。謝謝光臨小九的學(xué)堂。

原文鏈接:http://www.cnblogs.com/xfuture/p/3684762.html

責(zé)任編輯:林師授 來源: 博客園
相關(guān)推薦

2014-04-17 10:37:43

C++.NET Native

2011-11-09 17:10:19

Windows 8系統(tǒng)

2020-11-13 09:32:58

JPA Mybatis數(shù)據(jù)庫

2020-12-14 11:40:27

Next.js SSRReact

2017-04-06 22:33:43

with磁盤數(shù)據(jù)

2010-02-05 14:32:18

Ubuntu Linu

2017-05-17 16:10:03

PC

2010-12-09 13:29:57

云計(jì)算

2009-03-23 16:13:49

網(wǎng)絡(luò)拓?fù)?/a>運(yùn)維管理摩卡軟件

2013-05-23 09:37:53

云提供商云代理商SaaS

2011-03-03 18:54:34

2009-09-04 17:34:11

C#CC++

2009-08-06 16:36:20

研究C#和.Net

2018-09-05 14:46:16

筆記本硬件配置

2009-08-19 10:09:21

C#和C++

2021-11-01 10:40:15

機(jī)器學(xué)習(xí)人工智能計(jì)算機(jī)

2009-08-13 14:52:21

.NET性能誤區(qū)C#和VB.NET

2011-05-18 18:05:47

C#C++

2011-05-18 17:56:38

C#C++
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號