: okunabilmesi ve anlamda bir anahtarı kullanın ikisi için Is there any significant difference between using if/else and switch-case in C#?eğer veya Anahtarı vaka başka ise performans göz önüne alındığı zaman kimse bir <strong></strong> veya <strong>anahtarı durum ise else if</strong></p> <p>Yinelenen iyidir
cevap
IF beyanları bir sürü yerine.
switch deyimi biraz daha hızlı olsa geçerli:
http://www.blackwasp.co.uk/SpeedTestIfElseSwitch.aspx
derleyici switch deyimi böylece daha varsa, ben, 3 veya 4 söyleyebilirim kullanan optimize edebilirsiniz(ilk Google'da hit) farklı durumlar
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).
Bu, performanstan ziyade bir stil sorunudur. Herhangi bir performans farkı benim görüşüme göre, negatif olacaktır. Ayrıca bkz. https://stackoverflow.com/questions/395618/ifelse-vs-switch.
Bu anahtar ifadelerinin biraz daha hızlı olabileceğini okudum.
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.
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
Tricky Testleri çalıştır, çünkü eğer ve anahtarları farklı IL koduyla sonuçlanır.
Birincisi özdeş olduklarını umar.
- 1. gizler: my AppDeleagate en <strong>didFinishLaunchingWithOptions ise</strong></p> <p>: iOS 8
- 2. Java - anahtarı Hashmap <Sınıfı, ArrayList <Class>>
- 3. WPF Popup Kontrolü</strong> taşınır <strong>Ana Popup alanının</strong> dışında veya eğer <strong>tıklandığında ise
- 4. Git, <<<<<<< HEAD dosyasına
- 5. * ngFor çıkış yerine hiçbir şey <code><li></li></code> ise, boş dizide
- 6. Ant (1.6.5) - Bir <condition> veya <if>
- 7. PHP i <code>call_user_func</code> veya <code>call_user_func_array</code>, ama nasıl i içine <code>$this</code> bağlayabilir bunu yapabilir, JavaScript ise
- 8. operatörü << o çekmek veya dönmez ostream aşırı Nasıl
- 9. Nedir? ve << demek?
- 10. Anahtarı ifadeleri Prolog yüklemler ise
- 11. Matlab: For döngüsü bir bütün <code>*fun</code> fonksiyonları (<code>arrayfun</code>, <code>cellfun</code>, <code>structfun</code> ve <code>spfun</code>) veya basitçe <code>for</code> döngü kullanarak kullanarak daha iyidir
- 12. System.LINQ.Dynamic: Bir liste içine (<T> (veya <T> numaralı başka herhangi bir koleksiyon)
- 13. Func <TObject, bool> veya <TObject> Predicate?
- 14. EJS: <% = versus <% -
- 15. css: 2 veya <code><thead></code> yılında <code><tr></code> daha varsa <tr>
- 16. TensorFlow operatör aşırı yükleme</p> <pre><code>tf.add(x, y) </code></pre> <p>ve TensorFlow içinde</p> <pre><code>x + y </code></pre> <p>arasındaki fark nedir
- 17. Java, bitshifts kullanırken, neden 1 << 32! = 1 << 31 << 1?
- 18. nasıl koşullu bağlı f kullanacağı bir bağdaştırıcının ihtiyaç</p> <pre><code>def f : Kleisli[Future, Context, Seq[Tip]] = ??? </code></pre> <p>f varolan yöntem göz önüne alındığında şartlı
- 19. loglama performansı ve operatör <<
- 20. nasıl</em></strong> çince karakterler</em></strong> hanyu pinyin için <strong><em>den <strong><em>dönüştürmek için
- 21. Ben tuş eşleme kaybetmeden <code>String</code> bir listeye bir <code>Integer</code> anahtarı ilişkilendiren bir <code>Map</code> düzleştirmek istiyorum dere ve lambda
- 22. <: <İş nasıl?
- 23. Vim'de <C> (kontrol) değiştirici anahtarı nasıl yeniden verilir?
- 24. s, S veya c + <cr>
- 25. "<%:" ne yapıyor?</p> <pre><code><%: Model.FirstName %> </code></pre> <p>"<%:" Ne vermez: do
- 26. Verilen 2 diziler, iki dizinin <code>A</code> ve <code>B</code>, her biri <code>n</code> olmayan negatif sayılar göz önüne alındığında ürünler
- 27. Ben</em></strong> grafiği oluşturmak için <strong><em>AmCharts kullanıyorum</p> <p>, JavaScript sürümü
- 28. Şu izle ifadem tutan bana gösteriyor Şu anda bir</p> <pre><code>Expression<Func<T,bool>> </code></pre> <p>bir</p> <pre><code>Expression<Func<T,object>> </code></pre> <p>dönüştürmek çalışıyorum
- 29. fare donanım <strong>klavyesi</strong> veya <strong>fare</strong> için <strong>olay aygıt düğümü</strong> bulmak için bir <strong>şaşmaz</strong> yöntemi nedir
- 30. Akış çıkışında <yerine <neden hala <çoğum?
dupe: http://stackoverflow.com/questions/395618/ifelse-vs-switch – shoosh