PHP Performance Benchmarks & Optimierungstipps
Kontrollstrukturen und Bedingungen
Unterscheidungen gibt es in jedem Programm, Zeige Fenster A oder B, Benutzer oder Admin?
Dieses erreicht man unter Verwendung der Kontrollstrukturen, welche eine Kontrolle des Programmablaufs ermöglichen.
If - ElseIf - Else - Bedingungen
<?php
$i = 0;
while($i < 100000) {
$n = rand(0,9);
if($n == 0)
$i++;
elseif($n == 1)
$i++;
elseif($n == 2)
$i++;
elseif($n == 3)
$i++;
elseif($n == 4)
$i++;
elseif($n == 5)
$i++;
elseif($n == 6)
$i++;
elseif($n == 7)
$i++;
elseif($n == 8)
$i++;
elseif($n == 9)
$i++;
else
$i++;
}
?>
Verschachtelte If - ElseIf - Else - Bedingungen
<?php
$i = 0;
while($i < 100000) {
$n = rand(0,9);
if($n == 0)
$i++;
else
if($n == 1)
$i++;
else
if($n == 2)
$i++;
else
if($n == 3)
$i++;
else
if($n == 4)
$i++;
else
if($n == 5)
$i++;
else
if($n == 6)
$i++;
else
if($n == 7)
$i++;
else
if($n == 8)
$i++;
else
if($n == 9)
$i++;
else
$i++;
}
?>
Switch - Case - Fallunterscheidung
<?php
$i = 0;
while($i < 100000) {
$n = rand(0,9);
switch($n) {
case 0:
$i++;
break;
case 1:
$i++;
break;
case 2:
$i++;
break;
case 3:
$i++;
break;
case 4:
$i++;
break;
case 5:
$i++;
break;
case 6:
$i++;
break;
case 7:
$i++;
break;
case 8:
$i++;
break;
case 9:
$i++;
break;
default:
$i++;
}
}
?>
Ternäre Operatoren (?:)
<?php
$i = 0;
while($i < 100000) {
$n = rand(0,9);
($n == 0)?$i++:($n == 1)?$i++:($n == 2)?$i++:($n == 3)?$i++:($n == 4)?$i++:
($n == 5)?$i++:($n == 6)?$i++:($n == 7)?$i++:($n == 8)?$i++:($n == 9)?$i++:$i++;
}
?>
Der Tenäre-Operator (?:-Operator) ist um ein vielfaches schneller als die If-Elseif-Else oder Switch-Case Bedingungen, da er keine Anweisungen ausführt sondern einfach nur Werte zurück gibt. Er hat jedoch den Nachteil, dass er schnell kryptisch und unverständlich wird; bei einfachen Bedingungen wie z.B. Return-Statements kann dieser jedoch sehr praktisch sein.
Variante | Laufzeit | Verhältnis |
Ternäre Operatoren (?:) | 2.295017 ms | 100% |
Switch | 4.582882 ms | 200% |
If, ElseIf, Else | 6.249189 ms | 272% |
If, ElseIf, Else (Verschachtelt) | 6.341934 ms | 276% |