前言
本篇透過一些簡單的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
文章首發公眾號:jianghupt。歡迎關注,瞭解更多高階技術。