MDA jitCompilationStart
Asisten penelusuran kesalahan terkelola (MDA) jitCompilationStart
diaktifkan untuk melaporkan ketika kompiler just-in-time (JIT) mulai mengompilasi fungsi.
Gejala
Ukuran set kerja meningkat untuk program yang sudah dalam format gambar asli, karena mscorjit.dll dimuat ke dalam proses.
Penyebab
Tidak semua rakitan yang bergantung pada program telah dihasilkan ke dalam format asli, atau rakitan tidak terdaftar dengan benar.
Resolusi
Mengaktifkan MDA ini memungkinkan Anda mengidentifikasi fungsi mana yang sedang dikompilasi JIT. Pastikan bahwa rakitan yang berisi fungsi dihasilkan ke format asli dan didaftarkan dengan benar.
Efek pada runtime bahasa umum
MDA ini mencatat pesan tepat sebelum metode dikompilasi JIT, sehingga memungkinkan MDA ini berdampak signifikan pada performa. Jika metode sebaris, MDA ini tidak akan menghasilkan pesan terpisah.
Output
Sampel kode berikut menunjukkan hasil sampel. Dalam hal ini, output menunjukkan bahwa, dalam assembly Test, metode "m" pada kelas "ns2.CO" dikompilasi JIT.
method name="Test!ns2.C0::m"
Konfigurasi
File konfigurasi berikut menunjukkan berbagai filter yang dapat digunakan untuk memfilter metode mana yang dilaporkan saat pertama kali dikompilasi JIT. Anda dapat menentukan bahwa semua metode dilaporkan dengan mengatur nilai atribut nama ke *.
<mdaConfig>
<assistants>
<jitCompilationStart>
<methods>
<match name="C0::m" />
<match name="MyMethod" />
<match name="C2::*" />
<match name="ns0::*" />
<match name="ns1.C0::*" />
<match name="ns2.C0::m" />
<match name="ns2.C0+N0::m" />
</methods>
</jitCompilationStart >
</assistants>
</mdaConfig>
Contoh
Sampel kode berikut dimaksudkan untuk digunakan dengan file konfigurasi sebelumnya.
using System;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
public class Entry
{
public static void Main(string[] args)
{
C0.m();
C1.MyMethod();
C2.m();
ns0.C0.m();
ns0.C0.N0.m();
ns0.C1.m();
ns1.C0.m();
ns1.C0.N0.m();
ns2.C0.m();
ns2.C0.N0.m();
}
}
public class C0
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void m() { }
}
public class C1
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void MyMethod() { }
}
public class C2
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void m() { }
}
namespace ns0
{
public class C0
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void m() { }
public class N0
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void m() { }
}
}
public class C1
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void m() { }
}
}
namespace ns1
{
public class C0
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void m() { }
public class N0
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void m() { }
}
}
}
namespace ns2
{
public class C0
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void m() { }
public class N0
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void m() { }
}
}
}
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk