29

.NET Core 2.1预览分层编译特性

 5 years ago
source link: http://www.infoq.com/cn/news/2018/08/netcore-tiered-compilation?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

.NET使用的JTI编译进程一直在平衡两个相互冲突的目标——更快的应用程序启动时间和更快的应用程序稳态性能。从终端用户的角度来看,如果JIT在启动时暂停并计算最佳的稳态性能,那么就会对应用程序启动速度的感受产生负面的影响。另一方面,如果JIT优先考虑更快的应用程序启动时间,那么应用程序的稳态性能就是次优的。

为了解决这一冲突,来自微软的Noah Falk 宣布 了面向.NET Core 2.1的分层编译。该特性使JIT执行多次编译,生成可以在运行时热交换的代码,从而获得最佳的整体性能。最终结果是应用程序启动快,同时又具有很棒的稳态性能。

由于该特性尚处于预览阶段,所以该特性还不是默认启用的,但是,对于任何.NET Core应用程序,都有几种方式可以激活。对于你能编译的应用程序,只需要向项目的默认属性组增加MSBuild属性 <TieredCompilation>true</TieredCompilation>

如果你在运行一个之前编译好的应用程序,你没有源代码,那么你可以在configProperties部分的 runtimeconfig.json 文件中设置一个新属性: System.Runtime.TieredCompilation=true

最后,可以使用环境变量 COMPlus_TieredCompilation=1 启用分层编译,而不必修改任何文件。

需要注意的是,目前,该特性仍然仅限于.NET Core,不能指定用于.NET Framework部署。想要试用这项新技术的开发人员还可以查看微软在GitHub上建立的 JitBench 项目比较结果。

查看英文原文: .NET Core 2.1 Previews Tiered Compilation


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK