'#; C' operatör performans
Hızlı performans gerektiren bir program var. Kendi iç döngüsü içinde, belli bir arabirimden devralır olup olmadığını görmek için bir nesne türü test etmem lazım.
Bunu yapmanın bir yolu, CLR-dahili tür denetleme işlevi ile olur. En şık yöntemi vardır muhtemelen 'olmak' anahtar kelime:
if (obj is ISpecialType)
Başka bir yaklaşım temel sınıf kendi sanal benim GetType vermek olacaktır() önceden tanımlanmış numaralandırma değeri (benim durumumda, aslında, ben sadece bir bool gerekir). bir döndüren fonksiyon Bu yöntem hızlı, ama daha az şık olurdu.
IL bir talimat için özellikle '' anahtar kelime, ama yerli montaj çevrildi hızlı çalıştırır anlamına gelmez. olduğunu duydum Herkesin performans '' karşı başka bir yöntemi? biraz fikir paylaşabilir
GÜNCELLEME:Tüm bilinçli cevaplar için teşekkürler! Bunun gibi bir kaç yararlı noktaları yaymak arasında cevaplar: Andrew nokta", " otomatik olarak gerçekleştiren bir atama önemli ama performans topladığı veriler ile İkili Evham ve Ian da son derece yararlı. Eğer cevaplar birini içerecek şekilde düzenlenmiş olsaydı çok iyi olurdutümbu Bilgi.
CEVAP
is
kullanarak, bu tür kontrol sonra, bu tür atama durumunda performans zarar verebilir. is
aslında herhangi bir sonraki döküm gereksiz yani denetleme türü için nesne çevirir.
Neyse döküm yapacaksanız, burada daha iyi bir yaklaşım
ISpecialType t = obj as ISpecialType;
if (t != null)
{
// use t here
}
SQL performans vs KATILMAK mı?...
Python koşullu operatör?...
Neden't C derleyicileri bir opera...
Java mı nedir: operatör aradı ve ne iş...
Tek tırnak kullanarak bir performans a...