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 - etkin
false - devre dışı
MSBuild özelliği TieredCompilation true - etkin
false - devre dışı
Ortam değişkeni COMPlus_TieredCompilation veya DOTNET_TieredCompilation 1 - etkin
0 - 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 - etkin
false - devre dışı
MSBuild özelliği TieredCompilationQuickJit true - etkin
false - devre dışı
Ortam değişkeni COMPlus_TC_QuickJit veya DOTNET_TC_QuickJit 1 - etkin
0 - 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 false eş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 1 eşdeğerdir.
Ayar adı Değerler
Ortam değişkeni COMPlus_ReadyToRun veya DOTNET_ReadyToRun 1 - etkin
0 - 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 - etkin
0 - devre dışı