Avatar billede RJFreelance Praktikant
25. december 2003 - 15:53 Der er 12 kommentarer og
1 løsning

Hvad er bedst/hurtigt

Hvad er bedst/hurtigt af disse koder:

if($_GET[mode]){
  if($_GET[mode] == 'mode1'){
      echo "mode1";
  } elseif($_GET[mode] == 'mode2'){
      echo "mode2";
  } else {
  echo "Vælg en mode!";
} else {
echo "Vælg en mode!"
}

Eller:

switch($mode) {
  case(mode1) :
      echo "mode1";
      break;
  case(mode2)
      echo "mode2";
      break;
  default:
      echo "Vælg en mode!";
}


Hvad er bedst. ??
Avatar billede ztyxx Nybegynder
25. december 2003 - 15:55 #1
tror måske at switch er hurtigst, men prøv at læse http://dk2.php.net/switch for der står bl.a. at det er det samme som en række if-statements
Avatar billede phpwiz Nybegynder
25. december 2003 - 15:58 #2
du kan jo lave dig en test med microtime før og efter dit script, og udskrive differencen...
Avatar billede RJFreelance Praktikant
25. december 2003 - 15:59 #3
ja men mit spg. er simpelt, er det mindre resourcekrævende at bruge switch en en række if statements ?

Hvilket det jo må være :)
Avatar billede random_hero Nybegynder
25. december 2003 - 16:02 #4
if($_GET[mode]){
  if($_GET[mode] == 'mode1'){
      echo "mode1";
  } elseif($_GET[mode] == 'mode2'){
      echo "mode2";
  } else {
  echo "Vælg en mode!";
} else {
echo "Vælg en mode!"
}

-------------------- DEN ---------------------------
Avatar billede RJFreelance Praktikant
25. december 2003 - 16:03 #5
Kan du så forklare hvorfor den er hurtigst ??
Avatar billede martinbk Nybegynder
25. december 2003 - 16:09 #6
jeg tvivler entlig på det har nogen form for relevans hvad du bruger, med mindre du kører din webserver på en 80286 16Mhz eller lign.

men som sagt lav dog en test af det

function GetMicroTime(){
    list($ms, $s) = explode(" ",microtime());
    return ((float)$ms + (float)$s);
}

$start = GetMicroTime();

if($_GET[mode]){
  if($_GET[mode] == 'mode1'){
      echo "mode1";
  } elseif($_GET[mode] == 'mode2'){
      echo "mode2";
  } else {
  echo "Vælg en mode!";
} else {
echo "Vælg en mode!"
}

$stop = GetMicroTime();

$tid = $stop - $start;

echo 'if sætninger tager '.$tid.' at udfører';

$start2 = GetMicroTime();

switch($mode) {
  case(mode1) :
      echo "mode1";
      break;
  case(mode2)
      echo "mode2";
      break;
  default:
      echo "Vælg en mode!";
}

$stop2 = GetMicroTime();

$tid2 = $stop2 - $start2;

echo 'Switch metoden tager '.$tid2.' at udfører';
Avatar billede martinbk Nybegynder
25. december 2003 - 16:15 #7
bør så nok lige rette mig selv.

echo 'if sætninger tager ';
printf("%.4f", $tid);
echo ' sekunder at udfører;


jeg undskylder mange gange, men jeg er lige stået op oven på en våd aften :-)
Avatar billede RJFreelance Praktikant
25. december 2003 - 16:22 #8
Switch er hurtigst :)

if:    0.000181078910828
swithc: 0.000173091888428

Men det er jo ikke meget :P
Avatar billede nak-m Nybegynder
25. december 2003 - 16:23 #9
holybull: hey! ingen obskøniteter her, tak! ;)
Avatar billede ztyxx Nybegynder
25. december 2003 - 16:24 #10
nak-m> holybull påpeger bare at det regnede igår aftes ;-)
Avatar billede martinbk Nybegynder
25. december 2003 - 16:31 #11
ztyxx ja, underlig entlig, det regnede i min stue :-(
Avatar billede martinbk Nybegynder
25. december 2003 - 16:33 #12
og supreme-creme, som jeg sagde det har INGEN betydning hvilken kontrol-struktur du bruger, ihvertfald ikke (som det ligner) til at bestemme hvilken side der skal redirectes til
Avatar billede martinbk Nybegynder
25. december 2003 - 17:22 #13
hmm, kun mig der ikke helt forstår hvorfor random_hero fik point?

så vidt jeg kan se var hans indlæg da alt andet en konstruktiv, og vel dokumenteret/begrundet?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester