2009-01-02 13 views

cevap

0

Eğer int/string/etc kullanıyorsanız, switch çok fazla koşulunuz varsa switch daha verimli hale getirebilecek daha karmaşık atlama seçeneklerine sahiptir. Bununla birlikte, bu farkın büyük olması muhtemel değildir ve switch tüm türler için bir seçenek değildir (yalnızca tamsayı temelli ve dize).

0

Bu anahtar ifadelerinin biraz daha hızlı olabileceğini okudum.

3

Neyi açıyorsunuz? Bir dize üzerinde geçiş yapıyorsanız,numaralı C# derleyicisi, veya sözlüklerine bir dizi/else kontrolüne dönüştürür. Hangisinin daha hızlı olacağı, söz konusu dizelere bağlıdır (aday dizge dahil).

İntegral bir değer açıyorsanız, C# derleyicisinin her zaman bir IL anahtar deyimi kullandığını düşünürüm - ancak bu, ilgili değerlere bağlı olarak bir if/else dizisinden daha hızlı olabilir veya olmayabilir. (Eğer büyük bir bitişik bloktalarsa, CLR tablodaki doğru yere atlayabilir - çok farklıysa, yardım etmediğinden şüpheliyim.)

Bu sadece boş bir sorgu mu ya da bu seviyede gerçekten mikro optimizasyon yapıyor musunuz? Herhangi bir performans farkı, vakaların büyük çoğunluğunda önemsiz olacaktır - okunabilirlik için yazınız.

0

Performans sorunlarını ele alırken, farkı gerçekçi veriler kullanarak ölçmeniz gerekir. Bunu spekülatif bir bakış açısıyla sormanız gerçeği ile başa çıkmak için gerçek bir performans sorununuz olmadığını ve bu nedenle hangisinin daha okunabilir/sürdürülebilir olduğunu merak etmelisiniz

0

Tricky Testleri çalıştır, çünkü eğer ve anahtarları farklı IL koduyla sonuçlanır.

Birincisi özdeş olduklarını umar.

İlgili konular