Futásidejű konfigurációs beállítások fordításhoz
Ez a cikk a .NET-fordítás konfigurálásához használható beállításokat ismerteti.
Feljegyzés
A .NET 6 az előtagon DOTNET_
szabványosítja a .NET futásidejű viselkedést konfiguráló környezeti változók helyett COMPlus_
. Az COMPlus_
előtag azonban továbbra is működni fog. Ha a .NET-futtatókörnyezet egy korábbi verzióját használja, akkor is használja a COMPlus_
környezeti változók előtagját.
Rétegzett fordítás
- Konfigurálja, hogy a just-in-time (JIT) fordító rétegzett fordítást használ-e. A rétegzett fordítás két szinten áttűnés a metódusokat:
- Az első szint gyorsabban generál kódot (gyors JIT), vagy betölti az előre lefordított kódot (ReadyToRun).
- A második réteg optimalizált kódot hoz létre a háttérben ("a JIT optimalizálása").
- A .NET Core 3.0-s és újabb verzióiban a rétegzett fordítás alapértelmezés szerint engedélyezve van.
- A .NET Core 2.1-ben és 2.2-ben a rétegzett fordítás alapértelmezés szerint le van tiltva.
- További információkért tekintse meg a rétegzett fordítási útmutatót.
A beállítás neve | Értékek | |
---|---|---|
runtimeconfig.json | System.Runtime.TieredCompilation |
true -Engedélyezvefalse -Tiltva |
MSBuild tulajdonság | TieredCompilation |
true -Engedélyezvefalse -Tiltva |
Környezeti változó | COMPlus_TieredCompilation vagy DOTNET_TieredCompilation |
1 -Engedélyezve0 -Tiltva |
Példák
runtimeconfig.json fájl:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation": false
}
}
}
runtimeconfig.template.json fájl:
{
"configProperties": {
"System.Runtime.TieredCompilation": false
}
}
Projektfájl:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilation>false</TieredCompilation>
</PropertyGroup>
</Project>
Gyors JIT
- Konfigurálja, hogy a JIT-fordító gyors JIT-t használ-e. Azok a metódusok, amelyek nem tartalmaznak hurkokat, és amelyekhez az előre lefordított kód nem érhető el, a gyors JIT gyorsabban, optimalizálás nélkül fordítja le őket.
- A gyors JIT engedélyezése csökkenti az indítási időt, de csökkentett teljesítményjellemzőkkel rendelkező kódot hozhat létre. Előfordulhat például, hogy a kód több veremterületet használ, több memóriát foglal le, és lassabban fut.
- Ha a gyors JIT le van tiltva, de a rétegzett fordítás engedélyezve van, csak az előre lefordított kód vesz részt a rétegzett fordításban. Ha egy metódus nincs előre lefordítva a ReadyToRun használatával, a JIT viselkedése megegyezik azzal, mintha a rétegzett fordítás le lett tiltva.
- A .NET Core 3.0-s és újabb verzióiban a gyors JIT alapértelmezés szerint engedélyezve van.
- A .NET Core 2.1-ben és 2.2-ben a gyors JIT alapértelmezés szerint le van tiltva.
A beállítás neve | Értékek | |
---|---|---|
runtimeconfig.json | System.Runtime.TieredCompilation.QuickJit |
true -Engedélyezvefalse -Tiltva |
MSBuild tulajdonság | TieredCompilationQuickJit |
true -Engedélyezvefalse -Tiltva |
Környezeti változó | COMPlus_TC_QuickJit vagy DOTNET_TC_QuickJit |
1 -Engedélyezve0 -Tiltva |
Példák
runtimeconfig.json fájl:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation.QuickJit": false
}
}
}
runtimeconfig.template.json fájl:
{
"configProperties": {
"System.Runtime.TieredCompilation.QuickJit": false
}
}
Projektfájl:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilationQuickJit>false</TieredCompilationQuickJit>
</PropertyGroup>
</Project>
Gyors JIT hurkokhoz
- Konfigurálja, hogy a JIT-fordító használ-e gyors JIT-t hurkokat tartalmazó metódusokon.
- A gyors JIT hurkokhoz való engedélyezése javíthatja az indítási teljesítményt. A hosszú ideig futó hurkok azonban hosszú ideig elakadhatnak a kevésbé optimalizált kódban.
- Ha a gyors JIT le van tiltva, ennek a beállításnak nincs hatása.
- Ha kihagyja ezt a beállítást, a gyors JIT nem használható hurkokat tartalmazó metódusokhoz. Ez egyenértékű az érték
false
beállításával.
A beállítás neve | Értékek | |
---|---|---|
runtimeconfig.json | System.Runtime.TieredCompilation.QuickJitForLoops |
false -Tiltvatrue -Engedélyezve |
MSBuild tulajdonság | TieredCompilationQuickJitForLoops |
false -Tiltvatrue -Engedélyezve |
Környezeti változó | COMPlus_TC_QuickJitForLoops vagy DOTNET_TC_QuickJitForLoops |
0 -Tiltva1 -Engedélyezve |
Példák
runtimeconfig.json fájl:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation.QuickJitForLoops": false
}
}
}
runtimeconfig.template.json fájl:
{
"configProperties": {
"System.Runtime.TieredCompilation.QuickJitForLoops": false
}
}
Projektfájl:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilationQuickJitForLoops>true</TieredCompilationQuickJitForLoops>
</PropertyGroup>
</Project>
ReadyToRun
- Konfigurálja, hogy a .NET Core-futtatókörnyezet előre lefordított kódot használ-e a rendelkezésre álló ReadyToRun-adatokkal rendelkező képekhez. Ha letiltja ezt a beállítást, a futtatókörnyezetet JIT-fordítási keretrendszerkódra kényszeríti.
- További információ: Futtatásra kész.
- Ha kihagyja ezt a beállítást, a .NET ReadyToRun-adatokat használ, ha az elérhető. Ez egyenértékű az érték
1
beállításával.
A beállítás neve | Értékek | |
---|---|---|
Környezeti változó | COMPlus_ReadyToRun vagy DOTNET_ReadyToRun |
1 -Engedélyezve0 -Tiltva |
Profilvezérelt optimalizálás
Ez a beállítás lehetővé teszi a dinamikus (rétegzett) profilalapú optimalizálást (PGO) a .NET 6-os és újabb verzióiban.
A beállítás neve | Értékek | |
---|---|---|
Környezeti változó | DOTNET_TieredPGO |
1 -Engedélyezve0 -Tiltva |
MSBuild tulajdonság | TieredPGO |
true -Engedélyezvefalse -Tiltva |
A profilalapú optimalizálás (PGO) segítségével a JIT-fordító optimalizált kódot hoz létre a leggyakrabban használt típusok és kódelérési utak alapján. A dinamikus PGO együttműködik a rétegzett fordítással, hogy tovább optimalizálja a kódot a 0. rétegben üzembe helyezett további rendszerezések alapján.
Példák
Projektfájl:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredPGO>true</TieredPGO>
</PropertyGroup>
</Project>