Bon comme on est vendredi et que l'on m'a gentillement posé la question de savoir si le require était plus rapide que l'include je me suis fait un petit benchmark pour trouver la réponse.
Petit rappel : Les deux fonctions n'ont pas le même comportement require déclenche une erreur php qui stop donc l'exécution du code alors que include déclenche un warning et continu l'exécution.
le test est fait sous php5
J'ai généré 2000 fichiers (1000 pour le require et 1000 pour include) avec le code suivant :
<?php
set_time_limit(0);
for($i = 0;$i<1000;$i++)
{
file_put_contents('/data/projects/test/include'.$i.'.php',"<?php\necho 'coucou je suis content ".$i."';\n?>");
file_put_contents('/data/projects/test/require'.$i.'.php',"<?php\necho 'coucou je suis content ".$i."';\n?>");
}
?>
Chaque fichier a un code différent je ne pense pas que cela joue mais bon comme on a apc sur les serveurs on n'est jamais trop prudent.
Maintenant que tout est prés on peut lancer le code de test de vitesse à proprement parler.
set_time_limit(0);
$start = time()+microtime();
for($i = 0;$i<1000;$i++)
{
include('/data/projects/test/include'.$i.'.php');
}
error_log('Benchmark include '.(time()+microtime()-$start),E_USER_WARNING);
$start = time()+microtime();
for($i = 0;$i<1000;$i++)
{
require('/data/projects/test/require'.$i.'.php');
}
error_log('Benchmark require '.(time()+microtime()-$start),E_USER_WARNING);
Et voilà le résultat dans mon log :
[11-Jan-2008 11:31:57] Benchmark include 0.039840936660767
[11-Jan-2008 11:31:57] Benchmark require 0.05462384223938
Donc include est 38% plus rapide que require.
Image : Jason Rogers