2011-05-24 14 views
137

reflektör kullanarak bazı çerçeve sınıfları geçmekte ve yöntemleri bir dizi fark ve özellikleri şu özellikTargetedPatchingOptOut: "Performans, NGen görüntü sınırları boyunca satır içi için kritik öneme sahip"?

[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] 

var ben de başka bir yere yukarıdaki yorumunu görülen ve asla bunu takip ettik eminim Been.

Birisi bana bunun C# ve diğer herhangi bir bağlamda ne anlama geldiğini söyleyebilir mi?

cevap

173

NGen'e, uygulamasının farklı bir düzenekte bile uygulanacağı yöntemin uygulanmasının doğru olduğunu bildirir. Örneğin

:

  • String.Equals[TargetedPatchingOptOut]
  • Sen yerine Sen
  • NGen String.Equals çağrı iç fonksiyon maksimum performans
  • için bu programda NGen çalıştırmak String.Equals
  • çağıran bir program yazmak vardır yöntemdeki gerçek kod ile yöntem çağrı talimatı.
    Yöntem çağrıları (biraz) pahalıdır, bu nedenle sık kullanılan yöntemler için bir performans artışıdır. Microsoft String.Equals bir güvenlik deliği bulursa o montaj sadece NGen'd etkilemez çünkü

Ancak, onlar sadece, mscorlib.dll güncelleme olamaz. (String.Equals referans alınmadan ham makine kodu olduğundan).
Gerçekte bunun gerçekleşmesi durumunda, güvenlik güncelleştirmesinin NGen deposunu temizleyeceğini varsayalım.

Bu özniteliğin yalnızca .NET Framework derlemelerinde yararlı olduğunu unutmayın. Buna kendi başına ihtiyacın yok. Bununla ilgili daha fazla bilgiyi burada bulabilirsiniz: https://stackoverflow.com/a/14982340/631802

+5

Mükemmel cevap, teşekkürler. – crypted

+18

Bu özniteliği kendi çerçevelerimizde kullanabilir miyiz? Açık kaynak kitaplığım, bundan faydalanabilecek bir çok matematik fonksiyonuna sahip ... – MattDavey

+3

.NET çerçevesi yamalıysa, varolan yerel görüntü dosyaları geçersiz kılınır ve yeniden oluşturulur (en azından benim anlayışım) – Motti

İlgili konular