rouages

Benchmark lecture et ecriture dans un fichier

Question existentielle !

Date de publication : 2008-12-07

Le code du benchmark :


<?php
$time = time() + microtime();
for ($i = 0; $i < 100000; $i ++)
{
$handle = fopen($filename, 'r+');
$str = fread($handle, filesize($filename));
rewind($handle);
ftruncate($handle,0);
fwrite($handle, $string);
fclose($handle);
}
var_dump(time() + microtime() - $time);
$time = time() + microtime();
for ($i = 0; $i < 100000; $i ++)
{
$content = file_get_contents($filename);
file_put_contents($filename,$content);
}
var_dump(time() + microtime() - $time);
?>

Résultats :


float 10.173743963242
float 10.913619995117

Conclusion :
C'est bien plus rapide d'ouvrir un fichier en lecture écriture que de faire une lecture puis une écriture.

Application directe :
Dans le cache de nos objets, nous projetons de soulager nos disques en évitant d'écrire en cache disque les objets n'ayant pas changer. Pour cela il faut comparer l'objet frais et l'objet caché et donc lire puis écrire le cache si celui ci a effectivement changer.

 
 

b1n@sp1n