Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede,.NET derlemesini yapılandırmak için kullanabileceğiniz ayarlar ayrıntılı olarak anlatılır.
Katmanlı derleme
- Tam zamanında (JIT) derleyicinin katmanlı derleme kullanıp kullanmayacağını yapılandırılır. Katmanlı derleme, yöntemleri iki katmandan geçirmektedir:
- İlk katman kodu daha hızlı oluşturur (hızlı JIT) veya önceden derlenmiş kodu (ReadyToRun) yükler.
- İkinci katman, arka planda iyileştirilmiş kod oluşturur ("JIT iyileştirme").
- .NET Core 3.0 ve sonraki sürümlerde katmanlı derleme varsayılan olarak etkinleştirilir.
- .NET Core 2.1 ve 2.2'de katmanlı derleme varsayılan olarak devre dışı bırakılır.
- Daha fazla bilgi için katmanlı derleme kılavuzuna bakın.
| Ayarın adı | Değerler | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation |
true -Etkinfalse -sakat |
| MSBuild özelliği | TieredCompilation |
true -Etkinfalse -sakat |
| Ortam değişkeni | DOTNET_TieredCompilation |
1 -Etkin0 -sakat |
Örnekler
runtimeconfig.json dosyası:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation": false
}
}
}
runtimeconfig.template.json dosyası:
{
"configProperties": {
"System.Runtime.TieredCompilation": false
}
}
Proje dosyası:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilation>false</TieredCompilation>
</PropertyGroup>
</Project>
Hızlı JIT
- JIT derleyicisinin hızlı JIT kullanıp kullanmadığını yapılandırılır. Döngü içermeyen ve önceden derlenmiş kodun kullanılamadığı yöntemler için, hızlı JIT bunları daha hızlı ancak iyileştirmeler olmadan derler.
- Hızlı JIT'nin etkinleştirilmesi başlangıç süresini azaltır 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ışabilir.
- Hızlı JIT devre dışı bırakılır ancak katmanlı derleme etkinleştirilirse, katmanlı derlemeye yalnızca önceden derlenmiş kod katılır. Bir yöntem ReadyToRun ile önceden derlenmemişse, katmanlı derleme devre dışı bırakılmış gibi JIT davranışı aynıdır.
- .NET Core 3.0 ve sonraki sürümlerinde, 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ın adı | Değerler | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation.QuickJit |
true -Etkinfalse -sakat |
| MSBuild özelliği | TieredCompilationQuickJit |
true -Etkinfalse -sakat |
| Ortam değişkeni | DOTNET_TC_QuickJit |
1 -Etkin0 -sakat |
Örnekler
runtimeconfig.json dosyası:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation.QuickJit": false
}
}
}
runtimeconfig.template.json dosyası:
{
"configProperties": {
"System.Runtime.TieredCompilation.QuickJit": false
}
}
Proje dosyası:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilationQuickJit>false</TieredCompilationQuickJit>
</PropertyGroup>
</Project>
Döngüler için hızlı JIT
- JIT derleyicisinin döngü içeren yöntemlerde hızlı JIT kullanıp kullanmayacağını yapılandırılır.
- Döngüler için hızlı JIT'nin etkinleştirilmesi başlatma performansını artırabilir. Ancak, uzun süre çalışan döngüler uzun süreler için daha az iyileştirilmiş kodda takılabilir.
- Hızlı JIT devre dışı bırakılırsa, bu ayarın hiçbir etkisi olmaz.
- Bu ayarı atlarsanız, döngü içeren yöntemler için hızlı JIT kullanılmaz. Bu, değerini
falseolarak ayarlamakla eşdeğerdir.
| Ayarın adı | Değerler | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation.QuickJitForLoops |
false -sakattrue -Etkin |
| MSBuild özelliği | TieredCompilationQuickJitForLoops |
false -sakattrue -Etkin |
| Ortam değişkeni | DOTNET_TC_QuickJitForLoops |
0 -sakat1 -Etkin |
Örnekler
runtimeconfig.json dosyası:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation.QuickJitForLoops": false
}
}
}
runtimeconfig.template.json dosyası:
{
"configProperties": {
"System.Runtime.TieredCompilation.QuickJitForLoops": false
}
}
Proje dosyası:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilationQuickJitForLoops>true</TieredCompilationQuickJitForLoops>
</PropertyGroup>
</Project>
ReadyToRun
- .NET çalışma zamanının kullanılabilir ReadyToRun verilerine sahip görüntüler için önceden derlenmiş kod kullanıp kullanmayacağını yapılandırılır. Bu seçeneği devre dışı bırakmak çalışma zamanını JIT derleme çerçevesi koduna zorlar.
- 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
1olarak ayarlamakla eşdeğerdir.
| Ayarın adı | Değerler | |
|---|---|---|
| Ortam değişkeni | DOTNET_ReadyToRun |
1 -Etkin0 -sakat |
Profil destekli iyileştirme
Bu ayar ,NET 6 ve sonraki sürümlerde dinamik (katmanlı) profil destekli iyileştirmeyi (PGO) etkinleştirir.
| Ayarın adı | Değerler | |
|---|---|---|
| Ortam değişkeni | DOTNET_TieredPGO |
1 -Etkin0 -sakat |
| MSBuild özelliği | TieredPGO |
true -Etkinfalse -sakat |
Profil destekli iyileştirme (PGO), JIT derleyicisinin en sık kullanılan türler ve kod yolları açısından iyileştirilmiş kod oluşturduğu yerdir. Dinamik PGO, katman 0 sırasında eklenen ek izlemelere göre kodu daha iyi hale getirmek için katmanlı derleme ile el ele çalışır.
Örnekler
Proje dosyası:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredPGO>true</TieredPGO>
</PropertyGroup>
</Project>