Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek podrobně popisuje nastavení, která můžete použít ke konfiguraci kompilace .NET.
Vrstvené kompilace
- Konfiguruje, jestli kompilátor JIT (just-in-time) používá vrstvenou kompilaci. Vrstvené přechody kompilace metody prostřednictvím dvou vrstev:
- První vrstva generuje kód rychleji (rychlý JIT) nebo načítá předem zkompilovaný kód (ReadyToRun).
- Druhá úroveň generuje optimalizovaný kód na pozadí ("optimalizace JIT").
- V .NET Core 3.0 a novějších verzích je ve výchozím nastavení povolená vrstvené kompilace.
- V .NET Core 2.1 a 2.2 je ve výchozím nastavení vrstvené kompilace zakázaná.
- Další informace najdete v průvodci vrstvenou kompilací.
| Název položky nastavení | Hodnoty | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation |
true -zpřístupněnýfalse -invalidní |
| Vlastnost MSBuild | TieredCompilation |
true -zpřístupněnýfalse -invalidní |
| Proměnná prostředí | DOTNET_TieredCompilation |
1 -zpřístupněný0 -invalidní |
Examples
runtimeconfig.json soubor:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation": false
}
}
}
runtimeconfig.template.json soubor:
{
"configProperties": {
"System.Runtime.TieredCompilation": false
}
}
Soubor projektu:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilation>false</TieredCompilation>
</PropertyGroup>
</Project>
Rychlý JIT
- Konfiguruje, jestli kompilátor JIT používá rychlé JIT. U metod, které neobsahují smyčky a pro které není předkompilovaný kód k dispozici, je rychlý JIT zkompiluje rychleji, ale bez optimalizace.
- Povolení rychlého JIT zkracuje dobu spuštění, ale může vytvořit kód s degradovanými charakteristikami výkonu. Například kód může používat více prostoru zásobníku, přidělit více paměti a běžet pomaleji.
- Pokud je funkce JIT zakázaná, ale je povolená vrstvené kompilace , účastní se vrstvené kompilace pouze předkompilovaný kód. Pokud metoda není předem zkompilována s ReadyToRun, chování JIT je stejné, jako kdyby vrstvené kompilace byla zakázána.
- V .NET Core 3.0 a novějších je ve výchozím nastavení povolený rychlý JIT.
- V .NET Core 2.1 a 2.2 je ve výchozím nastavení rychlý JIT zakázaný.
| Název položky nastavení | Hodnoty | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation.QuickJit |
true -zpřístupněnýfalse -invalidní |
| Vlastnost MSBuild | TieredCompilationQuickJit |
true -zpřístupněnýfalse -invalidní |
| Proměnná prostředí | DOTNET_TC_QuickJit |
1 -zpřístupněný0 -invalidní |
Examples
runtimeconfig.json soubor:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation.QuickJit": false
}
}
}
runtimeconfig.template.json soubor:
{
"configProperties": {
"System.Runtime.TieredCompilation.QuickJit": false
}
}
Soubor projektu:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilationQuickJit>false</TieredCompilationQuickJit>
</PropertyGroup>
</Project>
Rychlé JIT pro smyčky
- Konfiguruje, zda kompilátor JIT používá rychlé JIT u metod obsahujících smyčky.
- Povolení rychlého JIT pro smyčky může zlepšit výkon při spuštění. Dlouho běžící smyčky se ale můžou po dlouhou dobu zaseknout v méně optimalizovaném kódu.
- Pokud je funkce JIT zakázaná, toto nastavení nemá žádný vliv.
- Pokud toto nastavení vynecháte, rychlé JIT se nepoužívá pro metody, které obsahují smyčky. To je ekvivalentní nastavení hodnoty na
false.
| Název položky nastavení | Hodnoty | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation.QuickJitForLoops |
false -invalidnítrue -zpřístupněný |
| Vlastnost MSBuild | TieredCompilationQuickJitForLoops |
false -invalidnítrue -zpřístupněný |
| Proměnná prostředí | DOTNET_TC_QuickJitForLoops |
0 -invalidní1 -zpřístupněný |
Examples
runtimeconfig.json soubor:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation.QuickJitForLoops": false
}
}
}
runtimeconfig.template.json soubor:
{
"configProperties": {
"System.Runtime.TieredCompilation.QuickJitForLoops": false
}
}
Soubor projektu:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilationQuickJitForLoops>true</TieredCompilationQuickJitForLoops>
</PropertyGroup>
</Project>
ReadyToRun
- Konfiguruje, zda modul runtime .NET používá předkompilovaný kód pro image s dostupnými daty ReadyToRun. Zakázáním této možnosti se modul runtime vynutí kód architektury JIT-compile.
- Další informace najdete v tématu Připraveno ke spuštění.
- Pokud toto nastavení vynecháte, použije .NET data ReadyToRun, pokud je k dispozici. To je ekvivalentní nastavení hodnoty na
1.
| Název položky nastavení | Hodnoty | |
|---|---|---|
| Proměnná prostředí | DOTNET_ReadyToRun |
1 -zpřístupněný0 -invalidní |
Optimalizace na základě profilu
Toto nastavení umožňuje dynamickou (vrstvenou) optimalizaci profilu (PGO) v .NET 6 a novějších verzích.
| Název položky nastavení | Hodnoty | |
|---|---|---|
| Proměnná prostředí | DOTNET_TieredPGO |
1 -zpřístupněný0 -invalidní |
| Vlastnost MSBuild | TieredPGO |
true -zpřístupněnýfalse -invalidní |
Optimalizace s asistencí profilu (PGO) je místo, kde kompilátor JIT generuje optimalizovaný kód z hlediska typů a cest kódu, které se nejčastěji používají. Dynamický PGO funguje ručně s vrstvenou kompilací pro další optimalizaci kódu na základě další instrumentace, která je zavedená během vrstvy 0.
Examples
Soubor projektu:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredPGO>true</TieredPGO>
</PropertyGroup>
</Project>