SORU
18 EYLÜL 2008, PERŞEMBE


İf-else deyimi üzerinden geçiş avantajı

Nedir bu en iyi uygulama için kullanarak switch deyim vs kullanarak bir if ifadesi için 30 unsigned numaralandırma 10 olması beklenen bir eylem (ki şu anda aynı eylem). Performans ve boşluk olması gerekiyor ama kritik değil. Parçacık soyutlanmış yaptım adlandırma kuralları için benden nefret etme.

switch açıklama:

// numError is an error enumeration type, with 0 being the non-error case
// fire_special_event() is a stub method for the shared processing

switch (numError)
{  
  case ERROR_01 :  // intentional fall-through
  case ERROR_07 :  // intentional fall-through
  case ERROR_0A :  // intentional fall-through
  case ERROR_10 :  // intentional fall-through
  case ERROR_15 :  // intentional fall-through
  case ERROR_16 :  // intentional fall-through
  case ERROR_20 :
  {
     fire_special_event();
  }
  break;

  default:
  {
    // error codes that require no additional action
  }
  break;       
}

if Açıklama:

if ((ERROR_01 == numError)  ||
    (ERROR_07 == numError)  ||
    (ERROR_0A == numError)  || 
    (ERROR_10 == numError)  ||
    (ERROR_15 == numError)  ||
    (ERROR_16 == numError)  ||
    (ERROR_20 == numError))
{
  fire_special_event();
}

CEVAP
18 EYLÜL 2008, PERŞEMBE


Anahtarı kullanın.

En kötü durumda derleyici bir şey kaybetmezsin eğer başka bir zincir gibi aynı kodu oluşturur. Şüpheniz varsa çoğu durumda anahtar ilk açıklama yapın.

En iyi durumda iyileştirici kodu oluşturmak için daha iyi bir yol bulabilirsiniz. Bir derleyicinin yaptığı ortak şeyler ikili karar ağacı (kaydeder karşılaştırır ve ortalama durumda atlar) kurmak basit bir sıçrama tablosu (tüm karşılaştırır olmadan çalışır) inşa etmektir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CNET

    CNET

    5 Mayıs 2006
  • TheDamnWreckless

    TheDamnWreck

    12 Temmuz 2010
  • VitalyzdTv

    VitalyzdTv

    7 AĞUSTOS 2011