jitCompilationStart MDA
A jitCompilationStart
felügyelt hibakeresési segéd (MDA) aktiválva van a jelentéshez, amikor az igény szerinti (JIT) fordító elkezd lefordítani egy függvényt.
Hibajelenségek
A munkakészlet mérete megnő egy már natív képformátumú program esetében, mert mscorjit.dll betöltődik a folyamatba.
Ok
Nem minden szerelvény van létrehozva natív formátumban, vagy egy szerelvény nincs megfelelően regisztrálva.
Feloldás
Ennek az MDA-nak a engedélyezése lehetővé teszi annak azonosítását, hogy melyik függvényt fordítják JIT-fordításra. Győződjön meg arról, hogy a függvényt tartalmazó szerelvény natív formátumban jön létre, és megfelelően van regisztrálva.
Hatás a futtatókörnyezetre
Ez az MDA közvetlenül a metódus JIT-fordítása előtt naplóz egy üzenetet, így ennek az MDA-nak az engedélyezése jelentős hatással van a teljesítményre. Ha egy metódus beágyazott, ez az MDA nem hoz létre külön üzenetet.
Kimenet
Az alábbi kódminta a mintakimenetet mutatja be. Ebben az esetben a kimenet azt mutatja, hogy a szerelvénytesztben a "ns2.CO" osztály "m" metódusa JIT-fordítású volt.
method name="Test!ns2.C0::m"
Konfiguráció
Az alábbi konfigurációs fájl számos olyan szűrőt mutat be, amelyek segítségével kiszűrhető, hogy mely metódusok legyenek jelentve az első JIT-fordításkor. A névattribútum *értékre állításával megadhatja, hogy az összes metódust jelenteni lehessen.
<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>
Példa
Az alábbi kódmintát az előző konfigurációs fájlhoz kell használni.
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() { }
}
}
}
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: