在 dotnet core 2.1 可以使用阶梯编译的方法,从 dotnet framework 开始,在代码的所有方法在第一次进入的时候就需要使用 JIT 进行编译为本机的代码。可以看到代码是在第一次访问时编译的,所以编译的速度就影响了软件的运行速度。

在 dotnet core 2.1 使用的阶梯编译就是为了解决软件启动的问题



什么是阶梯编译

在软件启动的过程,可以认为几乎所有的方法都需要进行编译,在 Roslyn 有不同的方式编译,一个是快速编译,使用快速编译的方式会让代码运行速度比较慢。而另一个方式是优化编译,这个编译方式的编译速度比较慢,但是代码运行比较快。

现在在 dotnet core 2.1 就可以使用阶梯编译,在第一次遇到一个函数时就进行快速编译,而之后发现这个方法会频繁访问,就在另一个线程对这个方法进行优化编译,在编译完成再替换原来的入口。这样就可以做到在软件启动的过程使用的是快速编译的方法,通过快速编译的方法提高软件启动的速度,而在方法频繁访问的时候再重新使用优化编译,提高代码运行速度

如何打开

最简单的方法是在项目文件添加属性,当然要求先升级一下 dotnet core 2.1 的 sdk 可以到 dotnet sdk 2.1.300 winx64-CSDN下载

打开 xx.csproj 这里的 xx 就是项目的文件,当然如果看到这个博客,相信大家也知道这是哪个文件。

在这个文件的 PropertyGroup 添加 <TieredCompilation>true</TieredCompilation> 就可以打开,请看下面代码,如果看不到代码,请点击.NET Core Project File with Tiered Compilation Enabled

因为这个编译是在软件运行的时候使用 JIT 编译的,所以即使软件已经生成也可以通过configProperties打开,请看例子

  {
+ "runtimeOptions":
+ {
+ "configProperties":
+ {
+ "System.Runtime.TieredCompilation": true
+ }
+ },
"framework":
{
...
}
}

如果不想修改文件可以添加环境变量COMPlus_TieredCompilation=1打开,具体请看tiered compilation demo

Tiered Compilation Preview in .NET Core 2.1



我搭建了自己的博客 https://lindexi.gitee.io/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新

如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入


本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

dotnet core 2.1 使用阶梯编译的更多相关文章

  1. dotnet core 使用 CoreRT 将程序编译为 Native 程序

    现在微软有一个开源项目 CoreRT 能通过将托管的 .NET Core 编译为单个无依赖的 Native 程序 这个项目现在还没发布,但是能尝试使用,可以带来很多的性能提升 使用 CoreRT 发布 ...

  2. dotnet core 添加 SublimeText 编译插件

    因为 SublimeText 有很多插件都是使用 Py 写的,而我想使用 dotnet core 给 SublimeText 写一个编译插件,也就是在我使用 Markdown 的时候可以点击编译,将 ...

  3. dotnet core如何编译exe

    dotnet core 有一个转变,他用dll格式来代替exe作为通用执行格式,然后要命令行dotnet yourApp.dll 来运行程序.为了提高逼格,双击可以运行,可以采用以下方案: 方案一 用 ...

  4. dotnet core 跨平台编译发布

    vs2017 建立的项目,在项目目录 ,执行 dotnet publish -r ubuntu.15.04-x64 dotnet publish -r linux-x64 dotnet publish ...

  5. dotNet Core开发环境搭建及简要说明

    一.安装 .NET Core SDK 在 Windows 上使用 .NET Core 的最佳途径:使用Visual Studio. 免费下载地址: Visual Studio Community 20 ...

  6. dotnet Core Asp.net 项目搭建

    Asp.Net Core 介绍 Asp.Net Core 目前最新版本 1.0.0-preview2-003131 Asp.Net Core官网:https://dotnet.github.io/ A ...

  7. 体验 ASP.NET Core 1.1 中预编译 MVC Razor 视图

    这是从 ASP.NET Core 1.1 官方发布博文中学到的一招,可以在 dontet publish 时将 Razor 视图编译为 .dll 文件. 需要在 project.json 中添加如下配 ...

  8. dotnet core 出现Can not find runtime target for framework '.NETCoreApp,Version=v1.6' 的解决办法

    如果你在更新dotnet core新的类库后运行程序提示如下的错误: Can not find runtime target for framework '.NETCoreAPP, Version=v ...

  9. DotNet Core 1.0 集成 CentOS 开发与运行环境部署

    一.     DotNet Core 1.0 开发环境部署 操作系统安装 我们使用CentOS 7.2.1511版本. 安装libunwind库 执行:sudo yum install libunwi ...

随机推荐

  1. vue组件通信全面总结

    写在前面 组件间的通信是是实际开发中非常常用的一环,如何使用对项目整体设计.开发.规范都有很实际的的作用,我在项目开发中对此深有体会,总结下vue组件间通信的几种方式,讨论下各自的使用场景 文章对相关 ...

  2. python pattern 类

  3. 日期格式之——new Date()的用法

    获取时间: 1 var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获取当前年份(2位) 2 myDate.getF ...

  4. linux命令格式及who、whoami、su和passwd命令

    linux命令格式及who.whoami.su和passwd命令 1. Linux命令的格式 Linux命令的语法格式: 命令 [选项] [参数] 命令格式中命令.选项.参数的具体含义: 命令:告诉L ...

  5. 阿里云发布SaaS加速器,用宜搭,像搭积木一样搭应用

    宜搭让不会编码的人也能快速搭建SaaS应用,大幅提升研发效率. (图:阿里云智能产品管理部总经理马劲在2019阿里云峰会·北京现场进行宜搭应用搭建演示. ) 3月21日,在2019阿里云峰会·北京上, ...

  6. 全球首个百万IOPS云盘即将商业化 阿里云推出超高性能云盘ESSD

    近日,在经过近半年的上线公测后,阿里云全球首个跨入IOPS百万时代的云盘——ESSD即将迎来商业化,单盘IOPS高达100万,这是阿里云迄今为止性能最强的企业级块存储服务. 搭配ECS云服务器使用, ...

  7. 判断字符s是否为正整数和正小数

    下面一段代码是判断是否为正整数和正小数的:

  8. 两种获取python版本的方法

    方法1:查看python版本 import sys print("当前python版本",sys.version) 方法2:cmd框中查看的两种方式

  9. cocos2d-x游戏开发(十五)游戏载入动画loading界面

    这个资源载入的loading界面demo是在玩客网做逆转三国的时候随手写的,尽管我在那仅仅待了2个礼拜.可是也算參与了一个商业游戏项目了,学到不少东西.当时使用的cocos2d-x还是1.0版的,我用 ...

  10. Java练习 SDUT-2746_大小写转换

    大小写转换 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description X现在要学习英文以及各种稀奇古怪的字符的了.现在他想把一串字 ...