Was ist schneller IF-Elseif oder Switch?`

  • Themenstarter Themenstarter ByeBye 8492
  • Beginndatum Beginndatum
B

ByeBye 8492

Moinsen,
ich will ne Browser, OS abfrage machen, was ist schneller, diese mit IF, Elseif auszuführen oder mit Switch?

Soll für mein CMS sein, was möglichst schnell sein soll :D
 
Ich denke nicht, dass du da wirklich Performance rausholst.
Wenn du eine if Kaskade machst, dann solltest du natürlich die Fälle in der günstigsten Form anordnen, dh zuerst IE, dann Mozilla (wie das in php umgesetzt wird weiß ich nicht, bei der Assemblerprogrammierung spart man sich durch geschicktes setzen 2 Operationen. Da die Fallunterscheidung bei dir nur einmal vorkommt und nicht in einer oft genutzten Schleife, kannst du dir ja ausrechnen was du dir sparst, wenn dein Rechner ein paar tausend Operationen in der Sekunde schafft)
Die Switchanweisung bietet einfach einen besseren Überblick, wenn du mehr als 2 Browser unterscheidest.
 
Original geschrieben von fluessig
Ich denke nicht, dass du da wirklich Performance rausholst.
Wenn du eine if Kaskade machst, dann solltest du natürlich die Fälle in der günstigsten Form anordnen, dh zuerst IE, dann Mozilla (wie das in php umgesetzt wird weiß ich nicht, bei der Assemblerprogrammierung spart man sich durch geschicktes setzen 2 Operationen. Da die Fallunterscheidung bei dir nur einmal vorkommt und nicht in einer oft genutzten Schleife, kannst du dir ja ausrechnen was du dir sparst, wenn dein Rechner ein paar tausend Operationen in der Sekunde schafft)
Die Switchanweisung bietet einfach einen besseren Überblick, wenn du mehr als 2 Browser unterscheidest.

Ich wollte eigentlich zwischen 5&6 Browsern unterscheiden, aber ich denke dafür reicht auch noch die If Kaskade aus ...
 
Ich würde auf jedenfall zu der Switch-Überprüfung greifen. Wenn dort ein zutreffender Fall erreicht ist, wird der Switch-Block über das break; sofort verlassen. ein Elseif wird denke ich trotzdem noch überprüft, oder nicht?
 
Original geschrieben von Tim Comanns
Ich würde auf jedenfall zu der Switch-Überprüfung greifen. Wenn dort ein zutreffender Fall erreicht ist, wird der Switch-Block über das break; sofort verlassen. ein Elseif wird denke ich trotzdem noch überprüft, oder nicht?

Nein Elseif wird auch nicht weiter überprüft.
PHP:
<?php
$i = 2;
if($i == 1){ echo "test";}
elseif($i == 2) { echo "Dies wird angezeigt<br>";}
elseif($i == 2)	{ echo "Das nicht ;)";}
Else{ echo "Nicht möglich";}


?>

Da wird nur as erste angezeigt.

Also sollte ich trotzdem Switch nehmen?
 
Also sollte ich trotzdem Switch nehmen?

Wie oben beschrieben, bei der Perfomance gibt es dort keinen spürbaren Unterschied.
Allerdings wird der Code wesentlich besser lesbar ,wenn man die Unterscheidung per switch vornimmt.
Daher wirst du später sicher einen Vorteil haben ,wenn irgendwelche Fehler an deinem CMS auftreten sollten.
Switch ist eigentlich immer vorzuziehen ,wenn es mehr als 2-3 Fälle sind die unterschieden werden müssen und es sich mit der switch Struktur vereinbaren lässt.
 
Zurück