2010-11-01 14 views
6

¿Eso es posible? por ej. si quiero probar si str_replace() es más rápido que preg_replace()?Calcule el tiempo necesario para ejecutar una determinada función

+0

posible duplicado de [¿Existe una referencia de desempeño/referencia de PHP por función (o por tarea)?] (Http://stackoverflow.com/questions/2530610/does-a-php-per-function-or -per-task-performance-benchmark-reference-exist) –

+0

Disculpe, sin tener en cuenta el duplicado, pensé que los servicios de referencia proporcionaban el código fuente que usan, pero no es así. –

+1

Quiere un generador de perfiles como Zend_Debugger o XDebug para eso. Consulte http://stackoverflow.com/search?q=profile+php+script – Gordon

Respuesta

13

Puede ejecutar la misma línea de 10.000 veces (o más) en el script, y utilizar microtime(true) para contar el tiempo que tomó:

microtime()

+1

+1 Este es el método estándar. Es importante hacerlo un gran número de veces (es decir, en un bucle) para que (a) obtenga una diferencia medible, y (b) para que pueda filtrar las variaciones de velocidad entre una ejecución y otra. – Spudley

+0

gracias! parece que casi no hay diferencia entre las 2 funciones que mencioné :) str_replace parece un poco más rápido a veces – Alex

+0

No estoy del todo seguro, pero el intérprete tiene un optimizador, que puede encontrar que tu loop puede optimizarse, porque no hay variables cambiado en iteraciones de bucle Entonces, mejor manera es usar code-profilers como XDebug – seriyPS

25

La forma más fácil:

$time = microtime(true); // time in Microseconds 

// Your code here 

echo (microtime(true) - $time) . ' elapsed'; 

El modo difícil (er): Utilice un generador de perfiles de código para ver exactamente cuánto tiempo tomarán sus métodos.

6

Encontré esta respuesta por 'bisko' en this hilo.

$ start = microtime (true);

para (...) {} ....

$ = extremo microtime (true);

echo ($ end - $ start). ' segundos';

El for-loop se puede reemplazar por el tiempo que desee.

Cuestiones relacionadas