前言

本篇通过一些简单的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的设置的更多相关文章

  1. .NET Core 2.1中的分层编译(预览)

    如果您是.NET性能的粉丝,最近有很多好消息,例如.NET Core 2.1中的性能改进和宣布.NET Core 2.1,但我们还有更多的好消息.分层编译是一项重要的新特性功能,我们可以作为预览供任何 ...

  2. JIT——即时编译的原理

     介绍 java 作为静态语言十分特殊,他需要编译,但并不是在执行之前就编译为本地机器码. 所以,在谈到 java的编译机制的时候,其实应该按时期,分为两个部分.一个是 javac指令 将java源码 ...

  3. 小师妹学JVM之:深入理解JIT和编译优化-你看不懂系列

    目录 简介 JIT编译器 Tiered Compilation分层编译 OSR(On-Stack Replacement) Deoptimization 常见的编译优化举例 Inlining内联 Br ...

  4. 浅析 JIT 即时编译技术

    即时编译回顾 HotSpot 虚拟机执行 Java 程序时,先通过解释器对代码解释执行,发现某个方法或代码块执行比较频繁后,对热点代码进行编译,编译后生成与本地平台相关的机器码,再去执行机器码获得较高 ...

  5. 为什么 JVM 不用 JIT 全程编译?

    考虑到跨平台,所以无法使用AOT: 考虑到执行效率,所以无法全部使用JIT: 编译技术大约分为两种,一种AOT,只线下(offline)就将源代码编译成目标机器码,这是普遍用在系统程序语言中:另一种是 ...

  6. jvm——分层编译

    https://www.cnblogs.com/andy-zhou/p/5327288.html 分层编译根据编译器编译.优化的规模与耗时,划分出不同的编译层次: 第0层:程序解释执行,解释器不开启监 ...

  7. JVM之基础概念(运行时数据区域、TLAB、逃逸分析、分层编译)

    运行时数据区域 JDK8 之前的内存布局 JDK8 之后的 JVM 内存布局 JDK8 之前,Hotspot 中方法区的实现是永久代(Perm),JDK8 开始使用元空间(Metaspace),以前永 ...

  8. 使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中<meta-data>变量的值

    转载请说明来源: http://www.cnblogs.com/lizhilin2016/p/7390079.html 最近lz 在开始做一个新的Demo, 在项目中集成了bugly用于收集项目中的崩 ...

  9. 使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中&lt;meta-data&gt;变量的值

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/49247815 文章出自:薛瑄的博客 你也能够查看我的其它同类文章.也会让你有一定的 ...

  10. JVM JIT动态编译

    一.概述 1.1 基本概念 a. 动态编译(dynamic compilation)指的是"在运行时进行编译":与之相对的是事前编译(ahead-of-time compilati ...

随机推荐

  1. Maven 中央仓库配置

    Maven 中央仓库配置 Maven 中央仓库地址大全 <!-- 1.阿里中央仓库(首推1) --> <repository> <id>alimaven</i ...

  2. mysqli语句的用法

    改用了PHP7的环境后 mysql语句好像就不能用了.. 有点懵逼 就写一下该怎么用以免遗忘 ======= 1 链接数据库 $link=mysqli_connect('127.0.0.1:xxxx' ...

  3. Nginx常用经典配置|反向代理、HTTPS重定向、端口转发

    二级目录映射 目前前后端项目分离场景多了以后,一般是前端一个端口,后端一个端口. 如前端是https://example.com/index.html,调用的接口是https://example.co ...

  4. How to enable CIFS in kernel 4.9

    kernel config 要打开这几项

  5. 代码还是那个代码,但我已经知道了hashmap背后的东西

    代码还是那个代码,但我已经知道了hashmap背后的东西 数据结构是链表的数组(注:后面的版本为了提升性能,已经是改成链表或者树(节点较多)了) 思想上是空间换时间的算法 构造函数上有容量和负载因子2 ...

  6. linux 部署轻量级堡垒机Next Terminal

    对比 类似的开源堡垒机有 Teleport,Jumpserver,Next Terminal等等. Teleport 安全性最好,较轻量,但是对被管理资产不透明,纳管前需要双向认证,在资产设备上需额外 ...

  7. 离线安装docker和harbor

    1.下载docker和harbor版本(版本自选) docker下载地址: https://download.docker.com/linux/static/stable/x86_64/ harbor ...

  8. Swagger UI教程 API 文档神器 搭配Node使用 web api 接口文档 (转)

    http://www.68idc.cn/help/makewebs/qitaasks/20160621620667.html 两种方案 一.Swagger 配置 web Api 接口文档美化 二.通过 ...

  9. Dubbo常见问题

    1. dubbo No provider available for the service com.alibaba.dubbo.monitor.MonitorService from registr ...

  10. 《MySQL是怎样运行的》第七章小结