Derleme için çalışma zamanı yapılandırma seçenekleri
Bu makalede .NET derlemeyi yapılandırmak için kullanabileceğiniz ayarlar ayrıntılı olarak ve ayrıntılı olarak ve ayrıntılı olarak velanmıştır.
Not
.Net 6 DOTNET_ , COMPlus_ .NET çalışma zamanı davranışını yapılandıran ortam değişkenleri için yerine ön ek üzerinde standartlaştırır. Ancak COMPlus_ önek çalışmaya devam edecektir. .NET çalışma zamanının önceki bir sürümünü kullanıyorsanız, hala COMPlus_ ortam değişkenlerinin önekini kullanmanız gerekir.
Katmanlı derleme
- Tam zamanında (JIT) derleyicinin katmanlı derlemeyi kullandığını yapılandırıyor. Katmanlı derleme yöntemleri iki katmandan geçişler:
- İlk katman kodu daha hızlı ( hızlıJIT)veya önceden derlenmiş kodu (ReadyToRun) yükler.
- İkinci katman arka planda iyileştirilmiş kod üretir ("JIT'yi iyileştirme").
- .NET Core 3.0 ve üzerinde katmanlı derleme varsayılan olarak etkindir.
- .NET Core 2.1 ve 2.2'de katmanlı derleme varsayılan olarak devre dışıdır.
- Daha fazla bilgi için bkz. Katmanlı derleme kılavuzu.
| Ayar adı | Değerler | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation |
true - etkinfalse - devre dışı |
| MSBuild özelliği | TieredCompilation |
true - etkinfalse - devre dışı |
| Ortam değişkeni | COMPlus_TieredCompilation veya DOTNET_TieredCompilation |
1 - etkin0 - devre dışı |
Örnekler
runtimeconfig.json dosyası:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation": false
}
}
}
Project dosyası:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilation>false</TieredCompilation>
</PropertyGroup>
</Project>
Hızlı JIT
- JIT derleyicinin hızlı JIT kullandığını yapılandırıyor. Döngüler içermeen ve önceden derlenmiş kodun kullanılabilir olduğu yöntemler için, hızlı JIT bunları daha hızlı ancak iyileştirmeler olmadan derler.
- Hızlı JIT'nin etkinleştirilmesi başlatma süresini kısar ancak performans özellikleri düşürülmüş kodlar üretebilir. Örneğin, kod daha fazla yığın alanı kullanabilir, daha fazla bellek ayırabilir ve daha yavaş çalıştırabilir.
- Hızlı JIT devre dışı bırakılmış ancak katmanlı derleme etkinleştirildiyse, katmanlı derlemeye yalnızca önceden derlenmiş kod katılmıştır. Bir yöntem ReadyToRunile önceden derlenmişse, JIT davranışı katmanlı derlemenin devre dışı bırakılmış olmasıyla aynıdır.
- .NET Core 3.0 ve üzerinde hızlı JIT varsayılan olarak etkindir.
- .NET Core 2.1 ve 2.2'de hızlı JIT varsayılan olarak devre dışıdır.
| Ayar adı | Değerler | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation.QuickJit |
true - etkinfalse - devre dışı |
| MSBuild özelliği | TieredCompilationQuickJit |
true - etkinfalse - devre dışı |
| Ortam değişkeni | COMPlus_TC_QuickJit veya DOTNET_TC_QuickJit |
1 - etkin0 - devre dışı |
Örnekler
runtimeconfig.json dosyası:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation.QuickJit": false
}
}
}
Project dosyası:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilationQuickJit>false</TieredCompilationQuickJit>
</PropertyGroup>
</Project>
Döngüler için hızlı JIT
- JIT derleyicinin döngüler içeren yöntemlerde hızlı JIT'yi kullandığını yapılandırıyor.
- Döngüler için hızlı JIT'nin etkinleştirilmesi başlangıç performansını geliştirebilir. Ancak, uzun süre çalışan döngüler daha az iyileştirilmiş kodda uzun süreler boyunca takılmış olabilir.
- Hızlı JIT devre dışı bırakılırsa, bu ayarın hiçbir etkisi olmaz.
- Bu ayarı atlarsanız, döngüler içeren yöntemler için hızlı JIT kullanılmaz. Bu, değerini olarak ayarlamaya
falseeşdeğerdir.
| Ayar adı | Değerler | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation.QuickJitForLoops |
false - devre dışıtrue - etkin |
| MSBuild özelliği | TieredCompilationQuickJitForLoops |
false - devre dışıtrue - etkin |
| Ortam değişkeni | COMPlus_TC_QuickJitForLoops veya DOTNET_TC_QuickJitForLoops |
0 - devre dışı1 - etkin |
Örnekler
runtimeconfig.json dosyası:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation.QuickJitForLoops": false
}
}
}
Project dosyası:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilationQuickJitForLoops>true</TieredCompilationQuickJitForLoops>
</PropertyGroup>
</Project>
ReadyToRun
- Kullanılabilir ReadyToRun verilerine sahip görüntüler için .NET Core çalışma zamanının önceden derlenmiş kod kullanarak kullanmayacağı yapılandırıldı. Bu seçeneğin devre dışı bırakılması çalışma zamanının JIT derleme çerçeve koduna neden olur.
- Daha fazla bilgi için bkz. Çalıştırmaya Hazır.
- Bu ayarı atlarsanız, .NET kullanılabilir olduğunda ReadyToRun verilerini kullanır. Bu, değerini olarak ayarlamaya
1eşdeğerdir.
| Ayar adı | Değerler | |
|---|---|---|
| Ortam değişkeni | COMPlus_ReadyToRun veya DOTNET_ReadyToRun |
1 - etkin0 - devre dışı |
Profil destekli iyileştirme
Bu ayar, .NET 6 ve sonraki sürümlerinde dinamik veya katmanlı profil destekli iyileştirmeye (PGO) olanak sağlar.
| Ayar adı | Değerler | |
|---|---|---|
| Ortam değişkeni | DOTNET_TieredPGO |
1 - etkin0 - devre dışı |