PHP Benchmark

  • Themenstarter Themenstarter sw33tlull4by
  • Beginndatum Beginndatum
S

sw33tlull4by

Guest
Hi!
Ich modifiziere hier gerade ein Programm von mir.
Damals habe ich das Skript anders geschrieben als ich es heute machen würde, was mich zu einer interessanten Frage geführt hat:

Wenn ich Fallunterscheidungen in den einzelnen PHP-dateien mache, was ist schneller
if(){}else if(){}else{}

oder
if(){...exit();}if(){...exit()} .....

mfg

sw33t
 
Ich würde auf den ersten Blick sagen: Beides gleich schnell. Else-(if) werden nicht weiter ausgewertet, sobald irgendeine Bedingung erfüllt worden ist.
Du kannst das ja mal in einer Schleife mit paar Hunderttausend Durchgängen starten - aber ich schätze, Codeoptimierung findet wo anders statt ;-)
 
viel größere performance killer sind zb geschichten wie

PHP:
$array_mit_einer_millionen_eintägen;
for ($i = 0; $i < count($array_mit_einer_millionen_einträgen); $i++)

weil hier das count jedes mal ausgeführt wird...

sauberer:
PHP:
$array_mit_einer_millionen_eintägen;
for ($i = 0,$k=count($array_mit_einer_millionen_einträgen); $i < $k;  $i++)

oder unnötig viele sql abfragen, die immer das selbe wissen wollen. kann sehr schnell bei fukntionen wie zb ob nen benutzer entsprechende rechte für irgendwas besitzt.
wenn dann das ganze hasRights() abgefragt wird und da nen query abgesetzt wird. und dann in ner schleife für 100 durchgänge wird hasRights() aufgerufen wird, hat man mal eben 100 queries rausgehauen, ohne das man das direkt sieht :D

auch blöd. ;)

sone if then verschachtelungen machen da kaum was aus.
was man da höchstens noc machen kann...

statt
PHP:
function foobar() {
  if (is_int($i)) {
    return true;
  } else {
    return false;
  }
}


PHP:
function foobar() {
    return is_int($i);
}

;)
 
Ja das mit der Codeoptimierung hab ich mir fast gedacht.
Das PHP nicht optimiert, wie zB das for(){}-Beispiel oder kein Loopunrolling macht habe ich auch mal schmerzlich selbst rausfinden müssen.

Mein Augenmerk lag auch eher auf dem Interpreter und ich habe zwar Benchmarks gefunden aber halt nichts zu meiner Frage, weil wenn ein Project aus mehreren dutzen Dateien und ca. 3000 Zeilen Code besteht fängt es langsam an haarig zu werden, zumal, die ganze if-else verschachtelei mit mehreren if abfragen war damals schon ziemlich,nervend und da hab ich mal den Code von nem Kumpel gesehen der das alles mit exit()gelöst hat, ist ja auch um einiges einfacher und da dachte ich halt es gibt einen unterschied, zumindest in der Performance.

Danke für die Antworten.
mfg
sw33t
 
Zurück
Oben