.Net8的快速JIT,分层编译,R2R的设置
前言
本篇通过一些简单的JIT设置,比如快速JIT,适用于循环的快速 JIT,分层编译,R2R等核心内容设置,快速进入.Net8核心区域。
概括
1.快速JIT
什么是快速JIT,顾名思义,被Rosyln编译的.Net源码进行快速的机器码编译。这么做的目的是,提高编译的速度,但是降低了代码的性能和整体质量。适用于大型的编译项目和对于性能并没有太多要求的项目。
怎么设置呢?比如你项目名称为:TianXia。
可以通过修改你当前项路径:
TianXia/bin/Debug/net8.0/TianXia.runtimeconfig.json文件。在里面添加如下代码:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation.QuickJit": true
}
}
}
2.快速循环JIT
顾名思义,你的代码里面又循环的语句。那么这个JIT配置就是,你是否在这个循环的语句里面启用快速JIT,以便于更快速的编译这个循环语句。
这里你可以通过修改后缀名为.csproj的项目文件。用记事本打开它,然后写入以下语句:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <TieredCompilationQuickJitForLoops>true</TieredCompilationQuickJitForLoops>
</PropertyGroup>
</Project>
3.分层编译
分层编译在.Net8里面默认是打开的,理论上不需要你开启它。这里也看下它是如何配置的。
你可以按照自己的平台,添加以下环境变量:
# Windows
set DOTNET_TieredCompilation=1
# Powershell
$env:DOTNET_TieredCompilation="1"
# Unix
export DOTNET_TieredCompilation=1
4.R2R设置
R2R是判断当代码运行的时候,是否使用有预编译的代码,如果不是使用,则强制JIT编译,这里也看下它的设置:
set DOTNET_ReadyToRun=1
结尾
以上设置,在大型的.Net项目里面或者服务器项目里面会进行很好的优化和性能释放。
作者:江湖评谈
参考:
https://learn.microsoft.com/zh-cn/dotnet/core/runtime-config/
https://learn.microsoft.com/zh-cn/dotnet/core/runtime-config/compilation
.Net8的快速JIT,分层编译,R2R的设置的更多相关文章
- .NET Core 2.1中的分层编译(预览)
如果您是.NET性能的粉丝,最近有很多好消息,例如.NET Core 2.1中的性能改进和宣布.NET Core 2.1,但我们还有更多的好消息.分层编译是一项重要的新特性功能,我们可以作为预览供任何 ...
- JIT——即时编译的原理
介绍 java 作为静态语言十分特殊,他需要编译,但并不是在执行之前就编译为本地机器码. 所以,在谈到 java的编译机制的时候,其实应该按时期,分为两个部分.一个是 javac指令 将java源码 ...
- 小师妹学JVM之:深入理解JIT和编译优化-你看不懂系列
目录 简介 JIT编译器 Tiered Compilation分层编译 OSR(On-Stack Replacement) Deoptimization 常见的编译优化举例 Inlining内联 Br ...
- 浅析 JIT 即时编译技术
即时编译回顾 HotSpot 虚拟机执行 Java 程序时,先通过解释器对代码解释执行,发现某个方法或代码块执行比较频繁后,对热点代码进行编译,编译后生成与本地平台相关的机器码,再去执行机器码获得较高 ...
- 为什么 JVM 不用 JIT 全程编译?
考虑到跨平台,所以无法使用AOT: 考虑到执行效率,所以无法全部使用JIT: 编译技术大约分为两种,一种AOT,只线下(offline)就将源代码编译成目标机器码,这是普遍用在系统程序语言中:另一种是 ...
- jvm——分层编译
https://www.cnblogs.com/andy-zhou/p/5327288.html 分层编译根据编译器编译.优化的规模与耗时,划分出不同的编译层次: 第0层:程序解释执行,解释器不开启监 ...
- JVM之基础概念(运行时数据区域、TLAB、逃逸分析、分层编译)
运行时数据区域 JDK8 之前的内存布局 JDK8 之后的 JVM 内存布局 JDK8 之前,Hotspot 中方法区的实现是永久代(Perm),JDK8 开始使用元空间(Metaspace),以前永 ...
- 使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中<meta-data>变量的值
转载请说明来源: http://www.cnblogs.com/lizhilin2016/p/7390079.html 最近lz 在开始做一个新的Demo, 在项目中集成了bugly用于收集项目中的崩 ...
- 使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中<meta-data>变量的值
转载请标明出处:http://blog.csdn.net/xx326664162/article/details/49247815 文章出自:薛瑄的博客 你也能够查看我的其它同类文章.也会让你有一定的 ...
- JVM JIT动态编译
一.概述 1.1 基本概念 a. 动态编译(dynamic compilation)指的是"在运行时进行编译":与之相对的是事前编译(ahead-of-time compilati ...
随机推荐
- logstash从MySQL导入数据到ES
下载安装 一定要对应ES版本(5.x,6.x,7.x) win下不用安装解压即用 , 解压目录不能带有空格和中文 , 否则会有奇奇怪怪的报错无法运行 win下要给logstash文件夹赋予管理员权限 ...
- [Vue warn]: Duplicate keys detected: ''. This may cause an update error. found in
原因: 使用element-ui 导致 使用路由模式之后 index 没写 导致 解决办法: 删掉 或者天添加路由
- 面试题:int[] arr 和 int... arr在参数列表中是一回事儿吗?
public class Exer { public static void main(String[] args) { Base1 b1 = new Sub1(); b1.add(1,2,3); } ...
- mysql 8.0.30 忘记密码登录mysql:
mysql 8.0.30 忘记密码登录mysql: cmd(使用管理员运行)-切换到mysql的bin目录下:一.输入命令:net stop mysql 停止服务: 二.输入命令:mysqld --c ...
- 安卓自动化查看包名和activity名的方法
1,cmd下,adb shell "dumpsys window | grep mCurrentFocus" 2,CMD中输入adb logcat ActivityManager: ...
- ajax缓存和fiddler——http协议调试代理工具
1.在ie9下,ajax请求可能会有缓存,需要在请求上一个随机数 如:Math.random(); 2.fiddler2 打开以后可以查看所有的http请求情况,也可以使用本地脚本代替要请求的js文件 ...
- 声网 X 在线自习室 同学陪伴、老师监督的在线自习是如何火出圈的?
实时互联网像触角一样,通过情景的共享延伸开来,链接着我们彼此的线下.线上生活,形成一张不可分割的网络.随着社交直播.在线教育.视频会议成为大众生活不可或缺的一部分的同时,智能手表.智能作业灯.视频双录 ...
- ctfshow VIP限免题目(最新)
源码泄露 这一题主要考察如何查看网页源代码,查看方式主要有三种 在网页前面加上view-source: 右键页面,点击查看页面源代码 键盘上按下F12打开开发者工具,在查看器中查看源代码 这一题随便一 ...
- 网页静态化技术 Freemarker
网页静态化解决方案在实际运用中比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道.对于电商网站的商品详细页(几百万的商品,同样的页面模板格局)来说,每个商品又有大量的信息,这样的情况同样也适 ...
- java多线程基础小白指南--关键字识别(start,run,sleep,wait,join,yield)
在学习java多线程基础上,会遇到几个关键字,理解并识别它们是掌握多线程的必备知识,下面,我将通过源码或者程序演示给出我对这几个关键字的理解,如果有不同意见,欢迎在评论区或者发私信与我探讨. 一.st ...