php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.11.2005, 16:18  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard Performance bei großen Switch Blöcken oder PHP5 Magics

Servus,

ich stell mir im Moment die Frage wie performant große Switch Blöcke - mit mehr als 10 Bedingungen - sind. Ist das der Rede Wert oder doch zu vernachlässigen?

Anlass zu diesen Gedanken gab mir meine Datums-Klasse da ich seit PHP5 die setter- u. getter Methoden liebgewonnen habe und ziemlich viel mit diesen Funktionen mache und das ganze dann natürlich über Switch Blöcke regel.

Mich interesiert halt ob euch da in der Richtung irgendwas aufgefallen ist.

ps: auf 10ms mehr oder weniger kommts mir nicht an nur das Problem dabei wird wahrscheinlich sein wenn mehrere Klassen diese Methoden ebenfalls verwenden dann könnte sich das evl. auf 1 Sec steigern obwohl das auch nicht gerade die Welt ist
HStev ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 01.12.2005, 10:14  
Gast
 
Beiträge: n/a
Standard

Genaue Zeitmessungen hab ich nie gemacht, daher kann ich zu switch-Blöcken nichts sagen. Allerdings sind if-else-if-Statements schneller, wenn sie nach der Häufigkeit des Auftretens geordnet sind.
  Mit Zitat antworten
Alt 01.12.2005, 10:29  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ich kann mir nicht vorstellen, warum if-else-if-Blöcke geordnet schneller sein sollen als ebenfalls geordnete switch-case-Blöcke.
Zergling-new ist offline   Mit Zitat antworten
Alt 01.12.2005, 10:52  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Ich kann mir vorstellen das er meint das bei
IF - ELSE die Bedingung nur einmal geprüft wird während bei einen SWITCH mit 2 CASEs die Bedingung 2 mal geprüft wird.
HStev ist offline   Mit Zitat antworten
Alt 01.12.2005, 10:54  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von HStev
Ich kann mir vorstellen das er meint das bei
IF - ELSE die Bedingung nur einmal geprüft wird während bei einen SWITCH mit 2 CASEs die Bedingung 2 mal geprüft wird.
Schon mal was von break gehört?
  Mit Zitat antworten
Alt 01.12.2005, 10:57  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Schon mal das Manual gelesen?
Zitat:
Die switch-Anweisung ist gleichbedeutend einer Reihe von if-Anweisungen mit dem gleichen Parameter.
wenn ich ne SWITCH habe

PHP-Code:
<?php
switch(2)
{
case 
1:
break;
case 
2:
break;
}
?>
dann wird die Bedingung 2 mal geprüft ... erst auf 2==1 und dann auf 2==2 ... ich glaub nicht das die Zend-Engine das nicht linear abarbeitet

ps: karl-150 begründe doch mal bitte was das mit break zu tun haben sollte
HStev ist offline   Mit Zitat antworten
Alt 01.12.2005, 11:00  
Gast
 
Beiträge: n/a
Standard

http://www.php.net/break
  Mit Zitat antworten
Alt 01.12.2005, 11:03  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

schön nur das wird mir leider nicht bei dem Beispiel mit der Datumsklasse helfen... woher will ich vorher schon wissen welcher Parameter übergeben wird?

karl-150 erkläre mal bitte genauer was du mir damit sagen möchtes ...ich kann mir nicht vorstellen das bei meinen Beispiel (2 Post's vorher) die Angabe eines Parameters bei break einen performanten Vorteil bringen würde.
HStev ist offline   Mit Zitat antworten
Alt 01.12.2005, 11:23  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von HStev
PHP-Code:
<?php
switch(2)
{
case 
1:
break;
case 
2:
break;
}
?>
Das ist doch Quatsch

PHP-Code:
<?php
if (== 1) {
  
// ..
} else if (== 2) {
  
//..
}
?>
Hier wird doch auch 2x geprüft! Ich denke die geben sich nichts, nur dass switch () bei sagen wir mal ab 3-5 case's einfach besser lesbar und editierbar ist.
Zergling-new ist offline   Mit Zitat antworten
Alt 01.12.2005, 11:27  
Gast
 
Beiträge: n/a
Standard

Bei switch hat man den Overhead der break-Anweisung. Find ich nicht sonderlich attraktiv gegenüber if. Das Argument der Lesbarkeit zieht nicht. Wer seinen Code ordentlich einrückt, findet keinen Unterschied zwischen if und case.

Switch kann dort attraktiv sein, wo man mehrere Übereinstimmungen zum selben Codeblock führen sollen, weil die zu vergleichenden Werte untereinander stehen, was IMO eine bessere Orientierung bietet.
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] MySQL Performance mit PHP5 miserabel Datenbanken 17 10.01.2005 17:24

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
switch- und if-anweisungen performance, php switch elseif performance, switch oder if ele schneller, php große switch, php 5 switch oder elseif, php switch max case, performance switch if php, switch-blöcke, php switch case performance, php switch zwei anweisungen, php switch anweisung schneller als if, php was ist schneller switch oder if else, php vorteil von switch ggü if, php switch or if else performance, php switch performance, elseif performance, php performance switch if else, php geschwindigkeit switch elseif, php switch oder if performance, php switch 2 case untereinander

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:55 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.