Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk a .NET-fordítás konfigurálásához használható beállításokat ismerteti.
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.
| Név beállítása | Értékek | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation |
true -Engedélyezvefalse -fogyatékos |
| MSBuild tulajdonság | TieredCompilation |
true -Engedélyezvefalse -fogyatékos |
| Környezeti változó | DOTNET_TieredCompilation |
1 -Engedélyezve0 -fogyatékos |
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.
| Név beállítása | Értékek | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation.QuickJit |
true -Engedélyezvefalse -fogyatékos |
| MSBuild tulajdonság | TieredCompilationQuickJit |
true -Engedélyezvefalse -fogyatékos |
| Környezeti változó | DOTNET_TC_QuickJit |
1 -Engedélyezve0 -fogyatékos |
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
falsebeállításával.
| Név beállítása | Értékek | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation.QuickJitForLoops |
false -fogyatékostrue -Engedélyezve |
| MSBuild tulajdonság | TieredCompilationQuickJitForLoops |
false -fogyatékostrue -Engedélyezve |
| Környezeti változó | DOTNET_TC_QuickJitForLoops |
0 -fogyatékos1 -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-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
1beállításával.
| Név beállítása | Értékek | |
|---|---|---|
| Környezeti változó | DOTNET_ReadyToRun |
1 -Engedélyezve0 -fogyatékos |
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.
| Név beállítása | Értékek | |
|---|---|---|
| Környezeti változó | DOTNET_TieredPGO |
1 -Engedélyezve0 -fogyatékos |
| MSBuild tulajdonság | TieredPGO |
true -Engedélyezvefalse -fogyatékos |
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. Dinamikus A 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 rendszerállapotok alapján.
Példák
Projektfájl:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredPGO>true</TieredPGO>
</PropertyGroup>
</Project>