SORU
28 Aralık 2008, Pazar


Orada değilse kullanma arasında anlamlı bir fark olduğunu ve durum geçiş C#?

Fayda/C if/else vs switch ifadesi kullanmanın bir dezavantajı ne#. Orada bir fark, belki de kodunuzu bakmak dışında bu kadar büyük olabileceğini hayal bile edemiyorum.

IL ya da ilişkili çalışma zamanı performans ortaya çıkan radikal biçimde farklı olması için bir neden var mı?

İlgili: What is quicker, switch on string or elseif on type?

CEVAP
28 Aralık 2008, Pazar


'Scott Wisniewski' cevabı, her yönüyle yanlış, ama bir şekilde upvoted ve kabul var . düzeltmeniz için

SWİTCH deyimi, yalnızca hata ayıklama veya uyumluluk modunda Eğerler aynı Kurul oluşturur. Açıklamasında, atlama tabloya ('O(1). hangi geçiş' deyim)- MSIL üzerinden derlenmiş olacak

C# (diğer birçok dilde farklı olarak) da dize sabitleri açmak için izin verir - ve bu biraz farklı çalışır. Belli ki pratik rasgele uzunluklarda dizgiler için Atlama tabloları oluşturmak için değil, genellikle bu tür geçiş edilebileceği yığını içine derlenmiş olacak.

Ama eğer koşullar numarası giderleri karşılamak için yeterince büyük değilse, C# derleyicisi karma tablo bir nesne oluşturmak, dize sabitleri ile doldurun ve bu tablo atlamak ve ardından bir arama yapacak. Karma tablo arama kesinlikle O(1) ve fark sabit maliyetler vardır, ama eğer kutuları sayısı büyükse, her dize Eğerler sabit kıyasla önemli ölçüde daha hızlı olacak.

Eğer koşullar sayısı 5 veya daha fazla ise, o özetle, EĞER kapatın, daha iyi hangisiyse onu kullanın yoksa tercih.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andytokkallos

    Andytokkallo

    27 Kasım 2007
  • Kamikazeepanda

    Kamikazeepan

    5 ŞUBAT 2006
  • spederson7

    spederson7

    17 Temmuz 2006