©
. Document créé le 17 mai 2010 , mis à jour le 15 octobre 2011.Ce qui est simple est toujours faux. Ce qui ne l'est pas est inutilisable. Paul Valéry (Mauvaises pensées)
Accueil du site > Astuces > PHP > Optimiser son code PHP (echo, print ou printf)
D’aucuns hésitent parfois entre ces trois fonctions qui permettent d’afficher du texte.
Un simple script permet de conclure que - pour un simple affichage, sans reformatage de variables - echo() et print() sont similaires. Et sans surprise, nous découvrons que printf() est trois fois plus lent.
Voici le script employé pour ce test :
<?php
//
// Vérification optimisation code
//
define('LOOP', 1000);
$string = '.';
// activer la ligne suivante pour texte long
/*
$string = 'Zut ! Je crois que le chien '
. ' Sambuca préfère le whisky '
. ' revigorant au doux porto.';
/* */
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);
}
$r = array();
for($jj=0; $jj<10; $jj++) {
//////////
ob_start();
$s = microtime(1);
for($ii=0; $ii<LOOP; $ii++) {
echo($string);
}
echo(PHP_EOL );
$r = def_array($r, 'echo', microtime(1) - $s);
ob_end_clean();
//////////
ob_start();
$s = microtime(1);
for($ii=0; $ii<LOOP; $ii++) {
echo <<<ECHO0
$string
ECHO0;
}
echo(PHP_EOL );
$r = def_array($r, 'echo0', microtime(1) - $s);
ob_end_clean();
//////////
ob_start();
$s = microtime(1);
for($ii=0; $ii<LOOP; $ii++) {
echo <<<"ECHO1"
$string
ECHO1;
}
echo(PHP_EOL );
$r = def_array($r, 'echo1', microtime(1) - $s);
ob_end_clean();
//////////
ob_start();
$s = microtime(1);
for($ii=0; $ii<LOOP; $ii++) {
print($string);
}
echo(PHP_EOL );
$r = def_array($r, 'print', microtime(1) - $s);
ob_end_clean();
//////////
ob_start();
$s = microtime(1);
for($ii=0; $ii<LOOP; $ii++) {
printf($string);
}
echo(PHP_EOL );
$r = def_array($r, 'printf', microtime(1) - $s);
ob_end_clean();
}
echo('resultats:'.PHP_EOL
. '- echo : '.$r['echo']['min']."\t".$r['echo']['max'].PHP_EOL
. '- echo Heredoc : '.$r['echo0']['min']."\t".$r['echo0']['max'].PHP_EOL
. '- echo Heredoc quot: '.$r['echo1']['min']."\t".$r['echo1']['max'].PHP_EOL
. '- print : '.$r['print']['min']."\t".$r['print']['max'].PHP_EOL
. '- printf : '.$r['printf']['min']."\t".$r['printf']['max'].PHP_EOL
);
?>
Si problème de copier/coller, voici ce script compressé :
Et son résultat pour un texte court :
resultats:
- echo : 0.00016689300537109 0.00021195411682129
- echo Heredoc : 0.00027608871459961 0.00034809112548828
- echo Heredoc quot: 0.00027012825012207 0.0022139549255371
- print : 0.00018191337585449 0.00021505355834961
- printf : 0.00042009353637695 0.00054311752319336
Et son résultat pour un texte long :
resultats:
- echo : 0.0002439022064209 0.00034785270690918
- echo Heredoc : 0.00040602684020996 0.00042486190795898
- echo Heredoc quot: 0.00040292739868164 0.00041699409484863
- print : 0.00023794174194336 0.00024795532226562
- printf : 0.0009160041809082 0.0017800331115723
Les forums sont fermés.