jitCompilationStart MDA

jitCompilationStartإدارة التصحيح assهوtant (MDA) هو تنشيط للتقرير عند بدء تشغيل المحول البرمجي في نفس الوقت (JIT) ترجمة الدالة.

الأعراض

العمل تعيين زيادة الحجم لأحد البرامج التي هو تنسيق النسخة الأصلية بالفعل لأن mscorjit.dll هو تم تحميلهها في العملية.

السبب

ليس لالجميع تجميعات يعتمد البرنامج تشغيل تم إنشاؤها في تنسيق أصلي، أو تلك التي قد تكون غير مسجَّل بشكل صحيح.

الدقة

تمكين th MDA هو تسمح لك بتحديد دالة التي هو يتم التحويل البرمجي JIT. تحديد ما إذا كان تجميع الذي يحتوي على دالة هو التي تم إنشاؤها بتنسيق أصلي و regهوtered بشكل صحيح.

التأثير تشغيل وقت التشغيل

يسجل هذا MDA رسالة قبل أن أسلوب يتم تصنيف JIT، وبالتالي تمكين هذا MDA له تأثير هام تشغيل الأداء. لاحظ أنه عند أسلوب هو المضمنة، th هو MDA لن تنشئ رسالة منفصلة.

الإخراج

يظهر نموذج تعليمات برمجية التالي عينة إخراج. في هذه الحالة يظهر الإخراج هذا التجميع في اختبار أسلوب "m" في فئة "ns2.CO" تم تحويله برمجياً JIT.

    method name="Test!ns2.C0::m"

التكوين

ملف تكوين التالي يعرض العديد من عوامل التصفية التي يمكن باستخدام إلى تصفية الطرق التي يتم الإعلام عنها عند عدم أولاً التحويل البرمجي JIT. يمكنك تحديد أن الجميع الأساليب بشأنه بتعيين القيمة السمة اسم إلى *.

<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>

مثال

نموذج تعليمات برمجية التالي هو مخصصة للاستخدام مع ملف تكوين السابق.

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() { }
        }
    }
}

راجع أيضًا:

المرجع

MarshalAsAttribute

المبادئ

تشخيص الأخطاء مع المساعدين التصحيح مدارة

تنظيم إمكانية التشغيل المتداخل