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 (?:) 5.700111 ms 100%
If, ElseIf, Else (Verschachtelt) 21.159172 ms 371%
Switch 23.949862 ms 420%
If, ElseIf, Else 31.095028 ms 546%
Grundlagen - Kontrollstrukturen - Schleifen - Arrays - Inkrement - Strings - Ausgabefunktionen - echo/print
Startseite   –   Impressum