is_file/file_exists Leistung und cache

Machte ich einige tests zu vergleichen und zu Messen die Geschwindigkeit der beiden Funktionen. is_file scheint um ein Vielfaches schneller (ich habe 10000 Iterationen für beide) als file_exists . Ich Frage mich, ob PHP oder OS verwenden einige cache für diese Funktionen oder nicht immer Zugriff auf HDD ? Ich denke Nein, aber ich Frage mich...

Habe ich diese code:

<?php
$time = microtime();
$time = explode(' ', $time);
$begintime = $time[1] + $time[0];
for($i=0;$i<10000;$i++)
    file_exists('/Applications/MAMP/htdocs/index.php');
$time = microtime();
$time = explode(" ", $time);
$endtime = $time[1] + $time[0];
$totaltime = ($endtime - $begintime);
echo 'PHP parsed this in ' .$totaltime. ' seconds.</br>';
$time = microtime();
$time = explode(" ", $time);
$begintime = $time[1] + $time[0];
for($i=0;$i<10000;$i++)
    is_file('/Applications/MAMP/htdocs/index.php');
$time = microtime();
$time = explode(" ", $time);
$endtime = $time[1] + $time[0];
$totaltime = ($endtime - $begintime);
echo 'PHP parsed this in ' .$totaltime. ' seconds.</br>';
?>
  • Rufen Sie diese oft in einer engen Schleife (wo dieser Effekt dominiert der Wunsch, Zeit)? Wenn nicht, würde ich nicht kümmern, es sei denn Sie sicher sind, dass es Sie verursacht ein performance-problem haben... denken Sie Daran, dass Premature optimization is the root of all evil... Verwenden, die semantisch die bessere alternative, bis Sie wissen, es ist ein problem, und dann optimieren, dann und nur dann...
  • In der Tat, is_file() ist eine satte 10 mal schneller als mit file_exists()! Habe es gerade ausprobiert, und es stimmt.
  • Wenn es hilft niemandem, wir können hinzufügen, dass file_exists() wird true zurückgegeben, für beide Verzeichnisse und Dateien, die existieren, wo is_file() nur dann true zurück wenn es eine Datei (und vorhanden ist, natürlich).
InformationsquelleAutor chubbyk | 2010-11-04
Schreibe einen Kommentar