Aracılığıyla paylaş


jitCompilationStart MDA

Not

Bu makale .NET Framework'e özgüdür. .NET 6 ve sonraki sürümleri de dahil olmak üzere daha yeni .NET uygulamaları için geçerli değildir.

Yönetilen jitCompilationStart hata ayıklama yardımcısı (MDA), tam zamanında (JIT) derleyici bir işlevi derlemeye başladığında raporlamak için etkinleştirilir.

Belirtiler

İşleme mscorjit.dll yüklendiğinden, zaten yerel görüntü biçiminde olan bir program için çalışma kümesi boyutu artar.

Neden

Programın bağımlı olduğu tüm derlemeler yerel biçimde oluşturulmamış veya bir derleme doğru kaydedilmemiş.

Çözüm

Bu MDA'nın etkinleştirilmesi, hangi işlevin JIT ile derlendiğini belirlemenize olanak tanır. İşlevi içeren derlemenin yerel biçimde oluşturulduğundan ve düzgün şekilde kaydedildiğinden emin olun.

Çalışma zamanı üzerindeki etkisi

Bu MDA, bir yöntemin JIT ile derlenmesi öncesinde bir iletiyi günlüğe kaydeder, bu nedenle bu MDA'nın etkinleştirilmesi performansı önemli ölçüde etkiler. Bir yöntem satır içiyse, bu MDA ayrı bir ileti oluşturmaz.

Çıktı

Aşağıdaki kod örneğinde örnek çıktı gösterilmektedir. Bu durumda çıkış, derleme Testinde "ns2.CO" sınıfındaki "m" yönteminin JIT ile derlendiğini gösterir.

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

Yapılandırma

Aşağıdaki yapılandırma dosyasında, ilk JIT derlendiğinde hangi yöntemlerin raporlandığını filtrelemek için kullanılabilecek çeşitli filtreler gösterilmektedir. name özniteliğinin değerini * olarak ayarlayarak tüm yöntemlerin bildirileceğini belirtebilirsiniz.

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

Örnek

Aşağıdaki kod örneğinin önceki yapılandırma dosyasıyla birlikte kullanılması amaçlanmıştır.

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

Ayrıca bkz.