dotnet core 2.1 使用阶梯编译
在 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 使用阶梯编译的更多相关文章
- dotnet core 使用 CoreRT 将程序编译为 Native 程序
现在微软有一个开源项目 CoreRT 能通过将托管的 .NET Core 编译为单个无依赖的 Native 程序 这个项目现在还没发布,但是能尝试使用,可以带来很多的性能提升 使用 CoreRT 发布 ...
- dotnet core 添加 SublimeText 编译插件
因为 SublimeText 有很多插件都是使用 Py 写的,而我想使用 dotnet core 给 SublimeText 写一个编译插件,也就是在我使用 Markdown 的时候可以点击编译,将 ...
- dotnet core如何编译exe
dotnet core 有一个转变,他用dll格式来代替exe作为通用执行格式,然后要命令行dotnet yourApp.dll 来运行程序.为了提高逼格,双击可以运行,可以采用以下方案: 方案一 用 ...
- dotnet core 跨平台编译发布
vs2017 建立的项目,在项目目录 ,执行 dotnet publish -r ubuntu.15.04-x64 dotnet publish -r linux-x64 dotnet publish ...
- dotNet Core开发环境搭建及简要说明
一.安装 .NET Core SDK 在 Windows 上使用 .NET Core 的最佳途径:使用Visual Studio. 免费下载地址: Visual Studio Community 20 ...
- dotnet Core Asp.net 项目搭建
Asp.Net Core 介绍 Asp.Net Core 目前最新版本 1.0.0-preview2-003131 Asp.Net Core官网:https://dotnet.github.io/ A ...
- 体验 ASP.NET Core 1.1 中预编译 MVC Razor 视图
这是从 ASP.NET Core 1.1 官方发布博文中学到的一招,可以在 dontet publish 时将 Razor 视图编译为 .dll 文件. 需要在 project.json 中添加如下配 ...
- 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 ...
- DotNet Core 1.0 集成 CentOS 开发与运行环境部署
一. DotNet Core 1.0 开发环境部署 操作系统安装 我们使用CentOS 7.2.1511版本. 安装libunwind库 执行:sudo yum install libunwi ...
随机推荐
- Unicode, UTF-8, GBK, ASCII的区别
看完知乎的两篇文章大概就明白了 https://zhuanlan.zhihu.com/p/25435644 https://www.zhihu.com/question/23374078 看完总结一下 ...
- 【巨人的步伐以及人类的进击】BSGS algorithm
原问题 求ax≡b(mod p)的最小正整数解. 解法 实际上是以空间换取时间的算法. 先用散列表把 ai (i∈[0,p√)) 都储存起来. 然后再从小到大枚举 j (j∈[0,p√)) ,在散列表 ...
- 【JZOJ4929】【NOIP2017提高组模拟12.18】B
题目描述 在两个n*m的网格上染色,每个网格中被染色的格子必须是一个四联通块(没有任何格子被染色也可以),四联通块是指所有染了色的格子可以通过网格的边联通,现在给出哪些格子在两个网格上都被染色了,保证 ...
- 【时光回溯】【JZOJ3567】【GDKOI2014】石油储备计划
题目描述 输入 输出 对于每组数据,输出一个整数,表示达到"平衡"状态所需的最小代价. 样例输入 2 3 6 1 5 1 2 1 2 3 2 5 4 5 4 3 2 1 3 1 1 ...
- Effective Modern C++:03转向现代C++
07:在创建对象时注意区分()和{} 自C++11以来,指定初始化值的的方式包括使用小括号,等号,以及大括号: ); // initializer is in parentheses ; // ini ...
- bzoj1295 最长距离
Description windy有一块矩形土地,被分为 N*M 块 1*1 的小格子. 有的格子含有障碍物. 如果从格子A可以走到格子B,那么两个格子的距离就为两个格子中心的欧几里德距离. 如果从格 ...
- 易位构词EOJ3451【字符串】【思维题】【模拟】
http://acm.ecnu.edu.cn/problem/3451/ 官方题解: 我们可以先考虑字符串有序的情况,比如是 aaabcc,我们只要将字符串右移 3 位,变成 bccaaa,就做完了. ...
- zabbix程序架构
zabbix程序架构 特性 数据采样:snmp;ssh/telnet;agent,ipmi,jmx 自定义检测机制 自定义指定时间间隔 实时绘图:展示 graph map screen slide s ...
- hdu5289 RMQ+二分
RMQ预处理最大值,最小值,然后对于每一点,二分可能满足的区间长度,长度-1就是该店开始的区间满足的个数. #include<stdio.h> #include<string.h&g ...
- 关于Apple Watch,听听开发了两个月Watch App的工程师怎么说
今年1月份有幸应苹果邀请,秘密参与苹果 Watch App 的真机现场调试.4月份,Apple Watch 会正式上市.在这之前,也算是亲自抢先体验了 Apple Watch,以及开发了一下 Watc ...