Optimiser son code PHP, Variables ou constantes

© Christian PAULUS. Document créé le 17 mai 2010 , mis à jour le 16 octobre 2010.

Il n'est point de secret que le temps ne révèle. Jean Racine

Accueil du site > Astuces > PHP > Optimiser son code PHP, Variables ou constantes

Comparatif / PHP 5.3.2

Il n’est pas rare de voir dans les scripts PHP la fin de ligne traditionnelle (End Of Line) - en général \n - pour insérer un saut de ligne.

Il existe une constante dans PHP : PHP_EOL, qui place automatique la fin de ligne compatible avec l’OS qui héberge votre serveur.

L’utilisation de la constante PHP_EOL est-elle plus performante que l’utilisation d’une variable ?

Voici un petit script pour effectuer cette comparaison :

<?php

//
// Vérification optimisation code
//

define('LOOP'1000);

function 
def_array(&$r$i$e) {
    if(!isset(
$r[$i])) {
        
$r[$i] = array('min'=>$e'max'=>$e);
    }
    else {
        
$r[$i]['min'] = min($r[$i]['min'], $e);
        
$r[$i]['max'] = max($r[$i]['max'], $e);
    }
    return(
$r);
}

$string '';
$eol "\n";
define('FDL'PHP_EOL );
    
$r = array();

for(
$jj=0$jj<10$jj++) {
    
    
//////////
    
$s microtime(1);
    for(
$ii=0$ii<LOOP$ii++) {
        
$string .= "\n";
    }
    
$r def_array($r'string'microtime(1) - $s);
    
    
//////////
    
$s microtime(1);
    for(
$ii=0$ii<LOOP$ii++) { 
        
$string .= $eol;
    }
    
$r def_array($r'eol'microtime(1) - $s);
    
    
//////////
    
$s microtime(1);
    for(
$ii=0$ii<LOOP$ii++) { 
        
$string .= FDL;
    }
    
$r def_array($r'FDL'microtime(1) - $s);
    
    
//////////
    
$s microtime(1);
    for(
$ii=0$ii<LOOP$ii++) {
        
$string .= PHP_EOL ;
    }
    
$r def_array($r'PHP_EOL'microtime(1) - $s);

}

echo(
'resultats:'.PHP_EOL
     
'- string : '.$r['string']['min']."\t".$r['string']['max'].PHP_EOL 
     
'- $eol   : '.$r['eol']['min']."\t".$r['eol']['max'].PHP_EOL
     
'- FDL    : '.$r['FDL']['min']."\t".$r['FDL']['max'].PHP_EOL
     
'- PHP_EOL: '.$r['PHP_EOL']['min']."\t".$r['PHP_EOL']['max'].PHP_EOL 
     
);

?>

Si problème de copié/collé, voici ce script compressé :

Zip - 621 octets

Le script compare :

  • l’ajout d’une chaine de caractères
  • l’ajout d’une variable pré-déclarée qui contient cette même chaîne
  • l’ajout d’une constante qui contient cette même chaîne
  • l’ajout de la constante PHP qui correspond à cette chaine.

Le résultat de ce script :

resultats:
- string : 0.00017189979553223        0.00021195411682129
- $eol   : 0.00017690658569336        0.00024199485778809
- FDL    : 0.0003199577331543        0.0003669261932373
- PHP_EOL: 0.00017380714416504        0.00036096572875977

Si le résultat est similaire dans les cas 1, 2 et 4, l’usage de la constante déclarée prend deux fois plus de temps machine.

Plussoyez !

Les forums sont fermés.