title author date CreateTime categories
dotnet core 2.1 使用阶梯编译
lindexi
2018-08-29 08:49:12 +0800
2018-8-4 14:44:4 +0800
dotnetcore

在 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

<script src="https://gist.github.com/richlander/53a3c5f0505433b45c83c98db74c5e03.js"></script>

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

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

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

Tiered Compilation Preview in .NET Core 2.1

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

  1. dotnet core 2.1 使用阶梯编译

    在 dotnet core 2.1 可以使用阶梯编译的方法,从 dotnet framework 开始,在代码的所有方法在第一次进入的时候就需要使用 JIT 进行编译为本机的代码.可以看到代码是在第一 ...

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

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

  3. dotnet core 添加 SublimeText 编译插件

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

  4. [C#]使用 C# 代码实现拓扑排序 dotNet Core WEB程序使用 Nginx反向代理 C#里面获得应用程序的当前路径 关于Nginx设置端口号,在Asp.net 获取不到的,解决办法 .Net程序员 初学Ubuntu ,配置Nignix 夜深了,写了个JQuery的省市区三级级联效果

    [C#]使用 C# 代码实现拓扑排序   目录 0.参考资料 1.介绍 2.原理 3.实现 4.深度优先搜索实现 回到顶部 0.参考资料 尊重他人的劳动成果,贴上参考的资料地址,本文仅作学习记录之用. ...

  5. Docker 部署Dotnet Core MVC项目

    原文:Docker 部署Dotnet Core MVC项目 1.dotnet core创建项目 dotnet new mvc -o myweb cd myweb 然后就是业务代码的编辑,增删改查乱七八 ...

  6. 探索 dotnet core 为何在 Windows7 系统需要补丁的原因

    在一些 Windows 7 系统上,根据 dotnet 官方文档,需要安装上 KB2533623 补丁,才能运行 dotnet core 或 .NET 5 等应用.尽管非所有的设备都需要安装此,但这也 ...

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

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

  8. dotnet core 使用 MongoDB 进行高性能Nosql数据库操作

    好久没有写过Blog, 每天看着开源的Java社区流口水, 心里满不是滋味. 终于等到了今年六月份 dotnet core 的正式发布, 看着dotnet 社区也一步一步走向繁荣, 一片蒸蒸日上的大好 ...

  9. dotnet Core Asp.net 项目搭建

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

  10. DotNet Core 介绍

    前言 asp.net core rtm 6月底即将发布,自己也想着为社区做点共享,刚好最近不太忙,看到社区的小伙伴们都在为dotnet core的推广而贡献力量,项目中刚好在用rc2版本,就多写些文章 ...

随机推荐

  1. springboot 在 yaml 文件中读取 pom 文件的 properties

    如果没有其他配置,只能读取 yaml 文件所在模块下 和 父级模块的 pom 的 properties,以下是配置: <properties> <revision>1.0< ...

  2. 记录--form 表单恢复初始数据

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 form 表单恢复初始数据 在现代的 Web 开发中,表单是不可或缺的组件之一.用户可以通过表单输入和提交数据,而开发者则需要对这些数据进 ...

  3. C++关于栈对象返回的问题

    本次实验环境 环境1:Win10, QT 5.12 环境2:Centos7,g++ 4.8.5 一. 主要结论 可以返回栈上的对象(各平台会有不同的优化),不可以返回栈对象的引用. 二.先看看函数传参 ...

  4. 再见了 Pages

    再见 Pages 之前一直用 GitHub Pages + Hexo 写博客,但是这段时间又出现了无法访问的问题,非常闹心,于是想把博客迁移到博客园,继续简简单单地写东西 挺感激 Pages ,这个博 ...

  5. 详解SSL证书系列(7)HTTP的三大缺点

    我们已经了解到HTTP协议具有相当优秀和方便的一面,然而HTTP并非只有好的一面,事物皆具有两面性,它也是有不足之处的,那么HTTP有哪些缺点呢? 窃听风险 由于HTTP本身不具备加密的功能,所以也无 ...

  6. KingbaseES V8R6 等待事件之CLogControlLock

    前言 Kingbase数据库的tuple行头部来标识这条记录的事务结束状态(未知.已提交.已回滚),在事务提交时如果并发更新100万行记录,需要对多个page的tuple进行更改,这种繁重的操作会对数 ...

  7. .NET Emit 入门教程:第六部分:IL 指令:2:详解 ILGenerator 辅助方法

    前言: 经过前面几大部分的学习,已经掌握了 Emit 的前因后果,今天来详细讲解 Emit 中 IL 的部分内容. 如前文所讲,通过 DynamicMethod(或 MethodBuilder)可获得 ...

  8. 高抗干扰抗噪,段码LCD液晶低功耗驱动IC-VK2C23B,兼容市面上16C23

    VK2C23是一个点阵式存储映射的LCD驱动器,可支持最大224点(56SEGx4COM)或者最大416点(52SEGx8COM)的LCD屏. 单片机可通过I2C接口配置显示参数和读写显示数据,也可通 ...

  9. Go 项目依赖注入wire工具最佳实践介绍与使用

    目录 一.引入 二.控制反转与依赖注入 三.为什么需要依赖注入工具 3.1 示例 3.2 依赖注入写法与非依赖注入写法 四.wire 工具介绍与安装 4.1 wire 基本介绍 4.2 安装 五.Wi ...

  10. 自己diy一个smi(可以监控gpu,cpu,memory)

    diy-smi 1.0(DIY System management interface) 在我们训练自己深度学习模型时,我们想看GPU信息,也想看CPU和内存信息.我常用的是nvidia-smi和ht ...