Hice algunas pruebas para comparar y medir la velocidad de ambas funciones. is_file parece ser varias veces más rápido (utilicé 10000 iteraciones para ambos) que file_exists. Me pregunto si PHP u OS usarán alguna memoria caché para estas funciones o si siempre tiene acceso a la unidad de disco duro. Creo que no, pero me pregunto ...is_file/file_exists rendimiento y caché
que utiliza este código:
<?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>';
?>
¿Está llamando esto muchas veces en un circuito cerrado (donde este efecto dominará el tiempo de solicitud)? Si no, no me preocuparía a menos que estés seguro de que te está causando un problema de rendimiento ... Recuerda que 'la optimización prematura es la raíz de todo mal '... Usa la alternativa semánticamente mejor hasta que sepas que es un problema y luego optimice entonces y solo entonces ... – ircmaxell
De hecho, is_file() es 10 veces más rápido que file_exists()! Lo intenté, y es verdad. – forthrin
Si ayuda a alguien, podemos agregar que file_exists() devolverá true para ambos directorios y archivos que existen, donde is_file() solo devolverá true si es un archivo (y existe, por supuesto). – aesede