在 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 2.2 MVC Razor 页面编译为 View.dll 文件的解决方法

    DotNet Core 2.2 MVC Razor 页面编译为 View.dll 文件的解决方法 参考文章: (1)DotNet Core 2.2 MVC Razor 页面编译为 View.dll 文 ...

  2. centos 6.5 安装dotnet core 2.2

    .net core 官网地址 https://dotnet.microsoft.com/download 本次安装版本为.net core SDK v2.2.101 1.查看系统版本, 升级系统基本l ...

  3. 【干货特供】dotNet core 应用部署至 centos(超详解附截图)

    文章来源:公众号-智能化IT系统. 阅读目录 需要安装的插件以及支撑架构 安装dotnetSDK 安装jexus 安装supervisord 遇到问题汇总 注意事项.扩展延伸 需要安装的插件以及支撑架 ...

  4. 国产中标麒麟Linux部署dotnet core 环境并运行项目 (三) 部署运行WEB API项目

    部署dotnet Core Web API 上一步的文章,是我们公司最核心的一个ORM组件,在中标麒麟系统完成了一个插入数据的任务,这一步是将正式的从dot net framework 迁移到 dot ...

  5. C# 极限压缩 dotnet core 控制台发布文件

    每次发布 dotnet core 应用都会觉得发布文件太大,而如果使用极限压缩,用 CoreRT 能让发布的控制台文件到 5KB 左右,不需要带框架就能在其他设备运行 这是微软 MichalStreh ...

  6. Dotnet Core应用跨框架版本运行

    有时候,我们真想用新框架,可也真不想改代码.   有一个前置的知识需要了解,就是微软 Dotnet Core 框架的版本体系.我前边的文章「Dotnet Core使用特定的SDK&Runtim ...

  7. 深入浅出Dotnet Core的项目结构变化

    有时候,越是基础的东西,越是有人不明白.   前几天Review一个项目的代码,发现非常基础的内容,也会有人理解出错. 今天,就着这个点,写一下Dotnet Core的主要类型的项目结构,以及之间的转 ...

  8. dotnet core 应用是如何跑起来的 通过自己写一个 dotnet host 理解运行过程

    在上一篇博客是使用官方提供的 AppHost 跑起来整个 dotnet 程序.本文告诉大家在 dotnet 程序运行到托管代码之前,所需要的 Native 部分的逻辑.包括如何寻找 dotnet 运行 ...

  9. Dotnet Core使用特定的SDKRuntime版本

    Dotnet Core的SDK版本总在升级,怎么使用一个特定的版本呢?   假期过完了,心情还在.今天写个短的. 一.前言 写这个是因为昨天刷微软官方文档,发现global.json在 SDK 3.0 ...

最新文章

  1. 【B/S实践】IIS发布
  2. 你要成为人才,先学习做伯乐
  3. Scrum立会报告+燃尽图(十月三十日总第二十一次)
  4. WCF技术剖析之三十二:一步步创建一个完整的分布式事务应用
  5. 用python画xy散点图-python画时间序列散点图
  6. C语言实现最长子序列 longest subsequence 算法(附完整源码)
  7. Python 字符串语法,for
  8. python 取字符串的最后一位_python中获得一个字符串最后出现位置 | 学步园
  9. 54份运算放大器书籍、文档资料合集(54份 0.46G)
  10. ssm+vue基于微信小程序的数学辅导教学学习系统#毕业设计
  11. python 图像手绘效果展示
  12. macd java 源代码_炒股知识一MACD详解
  13. Docker Wnmp 搭建
  14. 线性调频脉冲雷达信号
  15. 流式布局使用鸿洋大神写的库:com.hyman:flowlayout-lib:1.1.2
  16. IT业界中的著名女性高管
  17. pwn暑假训练(九) emem原来昨天是8今天是9
  18. android扇形动画弹出icon的功能
  19. c语言进程管理,OS进程管理模拟(C语言实现)
  20. 第二阶段--团队冲刺--第七天

热门文章

  1. 在什么场景下要使用类方法
  2. 分析 | 半导体元器件失效的五大原因详解
  3. SAE 1939学习笔记(三)
  4. 微信小程序-如何实现数组转字符串以逗号隔开?【详细】
  5. GPIO输入输出模式分析(详解)
  6. 揭秘618流量营销模式,天猫一小时打造阵仗浩大的立体全包围
  7. 牛顿法与拟牛顿法(含代码实现)
  8. MySQL中专门的关系运算
  9. 基于java处理ofd格式文件
  10. vue前端预览ofd格式的文件