article echo vs print

echo VS print

Une interrogation qui revient souvent parmis les développeurs est : "Qui est plus rapide entre echo et print() ?"


Je vais y répondre dans cet article.
Cet article va aussi avant tout à expliquer comment utiliser la classe Benchmark de PEAR

Avant tout.

Les benchmarks ont été effectués avec la classe "Benchmark" (version 1.2.2)  de PEAR. La version de php utilisée est la 5.0.4, le système d'exploitation est Windows XP SP2 tournant sur une machine non-optimisée avec un Pentium 4 cadencé à 2.53 GHz + 1 Go de DDR.
Apache, php et MySQL sont installés et administrés grâce à Wamp5

Les Benchmarks

Voici les codes utilisés pour le Benchmark :
  • Pour echo :
    <?php
    echo 'Hello World !';
    ?>
  • Pour print() :
    <?php
    print('Hello World !');
    ?>
Notez que les parenthèses de print sont facultatives.

Le code de benchmark.php

Le code utilisé pour effectuer le Benchmark + des explications :

<?php
require 'Timer.php'; // Ouverture du fichier Timer.php contenant la classe du Benchmark

$timer = new Benchmark_Timer(); // Initialisation de la classe du Bench
$timer->start(); // Commencement du Bench
echo 'Hello World !'; // L'instruction à afficher
$timer->stop(); // Arrêt du Bench
$timer->display(); // Affichage des résultats du Bench dans un tableau HTML
?>


Etant donné que les fonctions d'affichage sont peu gourmandes en ressource, nous allons les répéter 1000 fois :

<?php
require 'Timer.php'; // Ouverture du fichier Timer.php contenant la classe du Benchmark

$timer = new Benchmark_Timer(); // Initialisation de la classe du Bench
$timer->start(); // Commencement du Bench
for($i=1;i<=1000;++$i)
{
    echo
'Hello World !'; // L'instruction à afficher
}
$timer->stop(); // Arrêt du Bench
$timer->display(); // Affichage des résultats du Bench dans un tableau HTML
?>

Voilà, la même chose a été faite avec print()

Résultats

  • Pour echo :
      time index ex time %
    Start 1112804730.84137200 - 0.00%
    Stop 1112804730.95533600 0.113964 100.00%
    total - 0.113964 100.00%
  • Pour print() :
      time index ex time %
    Start 1112804933.78300200 - 0.00%
    Stop 1112804933.89791900 0.114917 100.00%
    total - 0.114917 100.00%
On ne peut pas dire que sur 1000 appels des fonctions, les différence sont bien grandes...

Conclusion

Maintenant que les Benchmarks sont analysés, nous pouvons tirer une conclusion que personne ne contestera : echo et print() s'équivalent au niveau des performances donc inutile de faire un rechercher/remplacer massif dans votre site...

Mais ?

Effectivement, je ne pouvais pas m'arrêter là, echo et print() ont des synthaxes fort différentes :

void echo ( string arg1 [, string ...] )
int print ( string arg )

Voilà ce que nous apprend la documentation de php sur les synthaxes de ces fonctions.
En clair, celà signifie que echo peut recevoir un nombre illimité de paramètres contrairement à print, ce qui fait que pour afficher une chaîne avec print, imaginons que vous devez afficher les variables (int) v1, (string) v2,(float) v3, vous serez obligé de procéder de cette manière :

<?php
$v1
=89426;
$v2=' est plus grand que ';
$v3=89425.9999;
print(
$v1.$v2.$v3);
?>

Alors qu'avec echo, vous auriez pu procéder exactement de la même manière ou plutôt utiliser la méthode suivante :

<?php
$v1
=89426;
$v2=' est plus grand que ';
$v3=89425.9999;
echo
$v1,$v2,$v3;
?>

Ça ne change rien, dites-vous ? Pas si sûr, retournons à nos Benchmarks :

Premier cas avec print :

  time index ex time %
Start 1112812361.06881700 - 0.00%
Stop 1112812361.57465600 0.505839 100.00%
total - 0.505839 100.00%

Deuxième cas avec echo et l'envoi de plusieurs paramètres :

  time index ex time %
Start 1112812444.41048400 - 0.00%
Stop 1112812444.71723000 0.306746 100.00%
total - 0.306746 100.00%

Ici, il est clair que la deuxième méthode s'avère être la meilleure ! Cette différence est dûe au fait que dans le premier cas, le moteur de php doit convertir toute la chaîne concaténée en string alors que dans le deuxième cas, aucune convertion de type n'est effectuée, d'où le score de echo.

Le mot de la fin

Voila ce qui clôturera cet article sur la différence de performances entre echo et print.
Pour ma part, je n'utilise que echo et j'ai toujours programmé avec echo même sans savoir les avantages qu'il procurait.

J'espère que cet article vous aura éclairé et qu'il vous aidera dans votre programmation !