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 2.2 MVC Razor 页面编译为 View.dll 文件的解决方法
DotNet Core 2.2 MVC Razor 页面编译为 View.dll 文件的解决方法 参考文章: (1)DotNet Core 2.2 MVC Razor 页面编译为 View.dll 文 ...
- centos 6.5 安装dotnet core 2.2
.net core 官网地址 https://dotnet.microsoft.com/download 本次安装版本为.net core SDK v2.2.101 1.查看系统版本, 升级系统基本l ...
- 【干货特供】dotNet core 应用部署至 centos(超详解附截图)
文章来源:公众号-智能化IT系统. 阅读目录 需要安装的插件以及支撑架构 安装dotnetSDK 安装jexus 安装supervisord 遇到问题汇总 注意事项.扩展延伸 需要安装的插件以及支撑架 ...
- 国产中标麒麟Linux部署dotnet core 环境并运行项目 (三) 部署运行WEB API项目
部署dotnet Core Web API 上一步的文章,是我们公司最核心的一个ORM组件,在中标麒麟系统完成了一个插入数据的任务,这一步是将正式的从dot net framework 迁移到 dot ...
- C# 极限压缩 dotnet core 控制台发布文件
每次发布 dotnet core 应用都会觉得发布文件太大,而如果使用极限压缩,用 CoreRT 能让发布的控制台文件到 5KB 左右,不需要带框架就能在其他设备运行 这是微软 MichalStreh ...
- Dotnet Core应用跨框架版本运行
有时候,我们真想用新框架,可也真不想改代码. 有一个前置的知识需要了解,就是微软 Dotnet Core 框架的版本体系.我前边的文章「Dotnet Core使用特定的SDK&Runtim ...
- 深入浅出Dotnet Core的项目结构变化
有时候,越是基础的东西,越是有人不明白. 前几天Review一个项目的代码,发现非常基础的内容,也会有人理解出错. 今天,就着这个点,写一下Dotnet Core的主要类型的项目结构,以及之间的转 ...
- dotnet core 应用是如何跑起来的 通过自己写一个 dotnet host 理解运行过程
在上一篇博客是使用官方提供的 AppHost 跑起来整个 dotnet 程序.本文告诉大家在 dotnet 程序运行到托管代码之前,所需要的 Native 部分的逻辑.包括如何寻找 dotnet 运行 ...
- Dotnet Core使用特定的SDKRuntime版本
Dotnet Core的SDK版本总在升级,怎么使用一个特定的版本呢? 假期过完了,心情还在.今天写个短的. 一.前言 写这个是因为昨天刷微软官方文档,发现global.json在 SDK 3.0 ...
最新文章
- 【B/S实践】IIS发布
- 你要成为人才,先学习做伯乐
- Scrum立会报告+燃尽图(十月三十日总第二十一次)
- WCF技术剖析之三十二:一步步创建一个完整的分布式事务应用
- 用python画xy散点图-python画时间序列散点图
- C语言实现最长子序列 longest subsequence 算法(附完整源码)
- Python 字符串语法,for
- python 取字符串的最后一位_python中获得一个字符串最后出现位置 | 学步园
- 54份运算放大器书籍、文档资料合集(54份 0.46G)
- ssm+vue基于微信小程序的数学辅导教学学习系统#毕业设计
- python 图像手绘效果展示
- macd java 源代码_炒股知识一MACD详解
- Docker Wnmp 搭建
- 线性调频脉冲雷达信号
- 流式布局使用鸿洋大神写的库:com.hyman:flowlayout-lib:1.1.2
- IT业界中的著名女性高管
- pwn暑假训练(九) emem原来昨天是8今天是9
- android扇形动画弹出icon的功能
- c语言进程管理,OS进程管理模拟(C语言实现)
- 第二阶段--团队冲刺--第七天