Había un pequeño debate acerca de la velocidad de fnmatch sobre pathinfo aquí: how to check if file is php?pathinfo vs fnmatch
no estaba totalmente convencido de modo decidido referencia las dos funciones.
El uso de rutas dinámicas y estáticas mostró que pathinfo era más rápido.
¿Mi lógica de comparación y conclusión son válidas?
EDITAR: El uso de php mac de cmd
PHP 5.3.0 (CLI) (construida: 20 Jul 2009 13:56:33 ) Derechos de autor (c) 1997-2009 El Grupo PHP Zend v2.3.0 motor, copyright (C) 1998-2009 Zend Tecnologías
ruta dinámica pathinfo 3,2973630428314 fnmatch 3,4520659446716 x1.05
ruta estática pathinfo ,86487698554993 fnmatch 1.0420439243317 x1.2
mac php xampp desde cmd
PHP 5.3.1 (CLI) (construido el 27 febrero 2010 12:41:51) Derechos de autor (c) 1997- 2009 El Grupo PHP Zend Engine v2.3.0, Derechos de autor (c) 1998-2009 Zend Tecnologías
ruta dinámica pathinfo 3.63922715187 4.99041700363 fnmatch x1.37
ruta estática pathinfo 1.03110480309 fnmatch 2.38929820061 x2.32
que incluyen una muestra de los resultados que están en segundos para 100.000 iteraciones en mi máquina:
dynamic path
pathinfo 3.79311800003
fnmatch 5.10071492195
x1.34
static path
pathinfo 1.03921294212
fnmatch 2.37709188461
x2.29
Código:
<pre>
<?php
$iterations=100000;
// Benchmark with dynamic file path
print("dynamic path\n");
$i=$iterations;
$t1=microtime(true);
while($i-->0){
$f='/'.uniqid().'/'.uniqid().'/'.uniqid().'/'.uniqid().'.php';
if(pathinfo($f,PATHINFO_EXTENSION)=='php') $d=uniqid();
}
$t2=microtime(true) - $t1;
print("pathinfo $t2\n");
$i=$iterations;
$t1=microtime(true);
while($i-->0){
$f='/'.uniqid().'/'.uniqid().'/'.uniqid().'/'.uniqid().'.php';
if(fnmatch('*.php',$f)) $d=uniqid();
}
$t3 = microtime(true) - $t1;
print("fnmatch $t3\n");
print('x'.round($t3/$t2,2)."\n\n");
// Benchmark with static file path
print("static path\n");
$f='/'.uniqid().'/'.uniqid().'/'.uniqid().'/'.uniqid().'.php';
$i=$iterations;
$t1=microtime(true);
while($i-->0) if(pathinfo($f,PATHINFO_EXTENSION)=='php') $d=uniqid();
$t2=microtime(true) - $t1;
print("pathinfo $t2\n");
$i=$iterations;
$t1=microtime(true);
while($i-->0) if(fnmatch('*.php',$f)) $d=uniqid();
$t3=microtime(true) - $t1;
print("fnmatch $t3\n");
print('x'.round($t3/$t2,2)."\n\n");
?>
</pre>
debería haber un CW ya que no es una cuestión real supongo – Gordon
Es una cuestión de verdad! ¿Por qué otros llegan a una conclusión diferente? – zaf
¿Cuántas veces hiciste la prueba? En máquinas multitarea, algunas tareas pueden retrasarse, ralentizando porciones de código que normalmente pueden ser más rápidas. – webbiedave