.NET Native:C++的性能 C#的产能?
2013 年,微软针对 Visual Studio 2013 http://www.zdnet.com/microsoft-shows-off-its-next-generation-project-n-compiler-technology-7000023156/]提出了“Project N”项目,在此次 Build 大会上,其面纱正式揭晓,它就是 .NET Native。在微软 MSDN 官方博客上,Subramanian Ramaswamy 和 .NET Native 团队高级项目经理 Andrew Pardoe 对 .NET Native 预览版进行了详细的介绍。
.NET Native
.NET Native 可以将 C# 代码编译为本地机器码。据博客介绍,.NET Native 可以优化所有的 Windows Store 应用。使用 .NET Native 编译 Windows Store 应用程序,应用启动速度将加快 60%,并且内存占用更小,这主要得益于开发团队优化 .NET Native 运行时(CLR 的一个重构和优化)和使用先进的 Microsoft VC++ 优化器后端。
该预览版允许开发者测试和编译应用程序,此外,最令开发者兴奋地是,使用 .NET Native 不仅会让应用拥有 C++ 般的性能表现,还可以实现 C# 般的生产力。
目前,.NET Native 预览版支持 Windows Store 应用,开发者可以使用该版本构建基于 ARM 和 x86 架构(很快会支持 x86)的应用。不久,.NET Native 开发团队还会提供跨平台的一致体验,并且将会继续完善和提升 .NET Native 的应用范围。
通过与 Visual Studio 结合,.NET Native 将会提供一流的 .NET 开发体验给用户,用户还将继续享有编辑/编译/调式等开发功能及体验。
据微软提供的 FAQ 获知,目前 .NET Native 预览版只支持 C# 语言,用 .NET Native 编译的程序将作为独立的原生编译代码部署到目标机器上,无需再安装 .NET Framework。
目前,微软已经用 .NET Native 开发了一些 Windows Store 甲方应用,这些应用包括 Wordament、 Fresh Pain。
.NET Native 预览版下载地址: http://msdn.microsoft.com/en-US/vstudio/dotnetnative]http://msdn.microsoft.com/en-US/vstudio/dotnetnative ,目前可以安装在 http://www.microsoft.com/en-us/download/details.aspx?id=42307]Visual Studio 2013 Update 2 RC 上。目前,微软官方还未告知何时发布 .NET Native 正式版本。
使用 .NET NativeToolchain 编译应用
项目加载后,你可以启用 .NET Native 编译器,前提是已经把应用针对 x64 或 ARM 架构进行了配置,此外,由于 .NET Native 编译为本地代码,所以你得指定一个真实的机器类型来代替 CPU。具体步骤:
http://images.cnitblog.com/news/66372/201404/161132475579399.jpg][img=498,0]http://s3.51cto.com/wyfs02/M00/24/6C/wKioL1NPP-vxVi8kAABP-m2s_3k631.jpg[/img] http://images.cnitblog.com/news/66372/201404/161132475416170.jpg][img=498,0]http://s4.51cto.com/wyfs02/M01/24/6C/wKioL1NPP-vD9sJwAABGhLLaPnA996.jpg[/img] http://images.cnitblog.com/news/66372/201404/161132475104414.jpg][img=498,0]http://s6.51cto.com/wyfs02/M02/24/6C/wKiom1NPQBSQcFOmAAClY6JYRGk132.jpg[/img] http://images.cnitblog.com/news/66372/201404/161132474786955.jpg][img]http://s5.51cto.com/wyfs02/M00/24/6C/wKiom1NPQBSQOIs4AACEpJzHXgc199.jpg[/img]http://images.cnitblog.com/news/66372/201404/161132475252941.jpg][img=498,0]http://s9.51cto.com/wyfs02/M01/24/6C/wKioL1NPP-vgEPOHAABvmDzuicg090.jpg[/img] 开发者们激情重燃
微软此次推出 .NET Native 预览版,让开发者在 .NET 平台上又看到了希望,开发者们的热情被再一次燃起,引起了无数开发者的热烈讨论,笔者搜集了一些,整理如下:
http://www.zhihu.com/people/chen-yu-87-96]陈宇:
技术上,.NET Native 纯粹是个优化。商业上,.NET Native 的静态链接,让微软可以进一步拉拢应用开发者,给他们提供大量方便易用的开发框架,而不用担心普通用户的机器上装满了各式各样的框架,影响体验了。这次微软的 .NET Native 有两个亮点:
一个是云编译。也就是开发者提交的是虚拟机代码,用户直接下载自己设备可用的机器码。不像 Mono 要手动编译,这对用户和开发者来说,都很方便。
另一个是,因为速度、空间的限制都不存在了,云编译器可以比即时编译 JIT,比 ART 的安装时编译,做更多更好的优化。微软的 Visual C++ 做了这么多年,应该有足够的技术储备。备注(本段文字摘自http://www.zhihu.com/question/23260180]知乎网)。
http://weibo.com/2164690772/AEhm0dram?mod=weibotime]RednaxelaFX:
感觉 .NET Native 比起以前最强力的地方在于能够做出“封闭世界的假设”并且放心做诸如 class hierarchy analysis 来做优化,而并不是说因为它用了 VC++ 的编译器后端所以就快——要知道原本 CLR 的 x64 Server JIT 也是源自 VC++ 的后端… 话说C# 的语言特性本来就比 C++ 更好优化,例如别名分析会好做很多。(来自新浪微博)
http://weibo.com/1950583472/AEpOq2z3y?mod=weibotime]Lex_Li:
总体来说,微软从 Xamarin 那边学到了不少。.NET Native 源自 AOT,但是优化更好。(来自新浪微博)
写在最后
针对 .NET 平台,微软给开发者带来的震撼不只是发布了 .NET Native,在 2014 Builid 大会上,微软提出了“ http://blogs.msdn.com/b/dotnet/archive/2014/04/03/the-next-generation-of-net.aspx]The Next Generation of .NET”。.NET 团队构建了一些新技术来扩展 .NET 核心功能,努力提升应用程序和用户体验,发布了一系列产品:
[list]
[*]http://blogs.msdn.com/b/dotnet/archive/2014/04/02/announcing-net-native-preview.aspx].NET Native
[*]http://roslyn.codeplex.com/].NET 编译平台 Roslyn,并开源
[*]下一代 JIT CTP3、“RyuJIT”,包含对 SIMD 的支持
[*]统一 Visual Studio 2013 Update 2 可移植类库和类库
[*]提升 Visual Studio 2013 Update 2 性能和诊断中心
[*].NET 移动服务
[*]http://blogs.msdn.com/b/dotnet/archive/2014/04/02/available-now-preview-of-project-orleans-cloud-services-at-scale.aspx]“Orleans”项目
微软的这些举措足以说明对开发者的重视,相信,未来的微软也不会让开发者们失望。