Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini merinci pengaturan yang dapat Anda gunakan untuk mengonfigurasi kompilasi .NET.
Kompilasi berjenjang
- Mengonfigurasi apakah pengkompilasi just-in-time (JIT) menggunakan kompilasi berjenjang. Metode transisi kompilasi berjenjang melalui dua tingkatan:
- Tingkat pertama menghasilkan kode dengan lebih cepat (JIT cepat) atau memuat kode yang telah dikompilasi sebelumnya (ReadyToRun).
- Tingkat kedua menghasilkan kode yang dioptimalkan di latar belakang ("mengoptimalkan JIT").
- Di .NET Core 3.0 dan yang lebih baru, kompilasi berjenjang diaktifkan secara default.
- Di .NET Core 2.1 dan 2.2, kompilasi berjenjang dinonaktifkan secara default.
- Untuk informasi selengkapnya, lihat panduan kompilasi berjenjang.
| Nama setelan | Nilai | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation |
true - diaktifkanfalse - dinonaktifkan |
| Properti MSBuild | TieredCompilation |
true - diaktifkanfalse - dinonaktifkan |
| Variabel lingkungan | DOTNET_TieredCompilation |
1 - diaktifkan0 - dinonaktifkan |
Examples
File runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation": false
}
}
}
file runtimeconfig.template.json:
{
"configProperties": {
"System.Runtime.TieredCompilation": false
}
}
File proyek:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilation>false</TieredCompilation>
</PropertyGroup>
</Project>
JIT Cepat
- Mengonfigurasi apakah pengkompilasi JIT menggunakan JIT cepat. Untuk metode yang tidak berisi perulangan dan kode yang telah dikompilasi sebelumnya tidak tersedia, JIT cepat mengkompilasinya lebih cepat tetapi tanpa pengoptimalan.
- Mengaktifkan JIT cepat mengurangi waktu mulai tetapi dapat menghasilkan kode dengan karakteristik performa yang terdegradasi. Misalnya, kode dapat menggunakan lebih banyak ruang tumpukan, mengalokasikan lebih banyak memori, dan menjalankan lebih lambat.
- Jika JIT cepat dinonaktifkan tetapi kompilasi berjenjang diaktifkan, hanya kode yang dikompilasi sebelumnya yang berpartisipasi dalam kompilasi berjenjang. Jika metode tidak dikompilasi sebelumnya dengan ReadyToRun, perilaku JIT sama seperti jika kompilasi berjenjang dinonaktifkan.
- Di .NET Core 3.0 dan yang lebih baru, JIT cepat diaktifkan secara default.
- Di .NET Core 2.1 dan 2.2, JIT cepat dinonaktifkan secara default.
| Nama setelan | Nilai | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation.QuickJit |
true - diaktifkanfalse - dinonaktifkan |
| Properti MSBuild | TieredCompilationQuickJit |
true - diaktifkanfalse - dinonaktifkan |
| Variabel lingkungan | DOTNET_TC_QuickJit |
1 - diaktifkan0 - dinonaktifkan |
Examples
File runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation.QuickJit": false
}
}
}
file runtimeconfig.template.json:
{
"configProperties": {
"System.Runtime.TieredCompilation.QuickJit": false
}
}
File proyek:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilationQuickJit>false</TieredCompilationQuickJit>
</PropertyGroup>
</Project>
JIT cepat untuk perulangan
- Mengonfigurasi apakah pengkompilasi JIT menggunakan JIT cepat pada metode yang berisi perulangan.
- Mengaktifkan JIT cepat untuk perulangan dapat meningkatkan performa startup. Namun, perulangan jangka panjang bisa terjebak dalam kode yang kurang dioptimalkan untuk jangka panjang.
- Jika JIT cepat dinonaktifkan, pengaturan ini tidak berpengaruh.
- Jika Anda menghilangkan pengaturan ini, JIT cepat tidak digunakan untuk metode yang berisi perulangan. Ini sama dengan mengatur nilai ke
false.
| Nama setelan | Nilai | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation.QuickJitForLoops |
false - dinonaktifkantrue - diaktifkan |
| Properti MSBuild | TieredCompilationQuickJitForLoops |
false - dinonaktifkantrue - diaktifkan |
| Variabel lingkungan | DOTNET_TC_QuickJitForLoops |
0 - dinonaktifkan1 - diaktifkan |
Examples
File runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation.QuickJitForLoops": false
}
}
}
file runtimeconfig.template.json:
{
"configProperties": {
"System.Runtime.TieredCompilation.QuickJitForLoops": false
}
}
File proyek:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilationQuickJitForLoops>true</TieredCompilationQuickJitForLoops>
</PropertyGroup>
</Project>
ReadyToRun
- Mengonfigurasi apakah runtime .NET menggunakan kode yang telah dikompilasi sebelumnya untuk gambar dengan data ReadyToRun yang tersedia. Menonaktifkan opsi ini memaksa runtime ke kode kerangka kerja kompilasi JIT.
- Untuk informasi selengkapnya, lihat Siap Dijalankan.
- Jika Anda menghilangkan pengaturan ini, .NET menggunakan data ReadyToRun saat tersedia. Ini sama dengan mengatur nilai ke
1.
| Nama setelan | Nilai | |
|---|---|---|
| Variabel lingkungan | DOTNET_ReadyToRun |
1 - diaktifkan0 - dinonaktifkan |
Pengoptimalan yang dipandu profil
Pengaturan ini memungkinkan pengoptimalan yang dipandu profil (PGO) dinamis (berjenjang) di .NET 6 dan versi yang lebih baru.
| Nama setelan | Nilai | |
|---|---|---|
| Variabel lingkungan | DOTNET_TieredPGO |
1 - diaktifkan0 - dinonaktifkan |
| Properti MSBuild | TieredPGO |
true - diaktifkanfalse - dinonaktifkan |
Pengoptimalan yang dipandu profil (PGO) adalah tempat pengompilasi JIT menghasilkan kode yang dioptimalkan dalam hal jenis dan jalur kode yang paling sering digunakan. Dinamis PGO bekerja sama dengan kompilasi berjenjang untuk lebih mengoptimalkan kode berdasarkan instrumentasi tambahan yang diberlakukan selama tingkat 0.
Examples
File proyek:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredPGO>true</TieredPGO>
</PropertyGroup>
</Project>