Hızlı işleme için en iyi yol

3 Cevap php

PHP programcı (deepgoing) ifadeleri ile çok karşılaştığı gibi ben bu işi nasıl merak ediyorum. Eğer anahtarını kullanırken, elseif-else-if veya if-else yapıları?

Ben şahsen fazla 2 olgu ile uğraşırken anahtarı seçici kullanarak tercih. Bu aynı zamanda bir performans açısından en iyi yolu nedir? Ve nasıl iç içe tablolar hakkında?

Ben tercih edilen yöntemlerden ve cevapları merak ediyorum.

Örnek

Üç seçenek seçicinin ihtiyacı:

Anahtarını kullanma:

switch($option)
{
  case 1 : $result= "foo"; break;
  case 2 : $result= "bar"; break;
  default : $result= "foobar";
}

Kullanıyorsanız-elseif-else

if($option == 1)
{
  $result= "foo";
} elseif ($option == 2)
{
  $result= "bar";
} else
{
  $result= "foobar";
}

Kullanarak eğer-if-else

if($option == 1)
{ 
  $handle = "foo";
}
if($option == 2)
{
  $result = "bar";
}
else
{
  $result = "foobar";
}

3 Cevap

Herkes ama acemi programcı bir switch bir if..else daha hızlı olduğunu bilir, ama bir switch bir {[koymak olabilir her bileşik ifadeyi yerini alamaz (Böyle bir mantıksal AND ile iki ifadeler) (3)]} beyanı

Ayrıca, bu gibi iç içe kodu bahsediyoruz eğer

function foo()
{
  if ( /* expr1 */ )
  {
    // code

    if ( /* expr2 */ )
    {
      // code 

      if (  /* expr3 */ )
      {
        // code
        if ( /* expr4 */ )
        {
          // code          
        }
      }
    }
  } 
}

Sonra tüm söyleyebileceğim, bunu yaparken lütfen dur edilir. Erken yerine çıkmak için işlevi zorlamak bazı koruma şartları var. İşte bu tarzı ile yeniden yazılmış yukarıda bulunuyor.

function foo()
{
  if ( !/* exp r1 */ )
  {
    return;
  }
  // code 1

  if ( !/* expr 2 */ )
  {
    return;
  }
  // code 2

  if ( !/* expr 3 */ )
  {
    return;
  }
  // code 3

  if ( !/* expr 4 */ )
  {
    return;
  }
  // code 4
}

Tabii ki, bu hem bir real uygulamada muhtemelen daha fazla fonksiyonlar ekleyerek daha iyi refactored.

I find switch handy when you have one piece of logic shared amongst many cases. ie.

case 1:
case 2:
case 3:
    // do stuff for 1, 2 and 3
    break;
case 4:
    // other stuff just for 4
    break;
default:
    // fallback for everything else
    break;

O düğmeye dikkat etmek onun da önemli loose comparison ki bazı senaryolarda istenmeyen olabilir gelmez

görünümünde bir performans açısından söyleyecek çok fazla yok

Switch deyimi: Ben üç örneklere bakarsanız, en güzel ve temiz bir almak kolay olduğunu söyleyebilirim. Eğer anahtarın gevşek karşılaştırma ile yaşayabilir, bu pick. Potansiyel kazanımları ufacık olarak bu düzeyde, performans konuları genellikle anlamsız.