Quiero saber cuántos milisegundos tarda un PHP for-loop en ejecutarse.
Conozco la estructura de un algoritmo genérico, pero no tengo idea de cómo implementarlo en PHP:
Begin
init1 = timer(); // where timer() is the amount of milliseconds from midnight
the loop begin
some code
the loop end
total = timer() - init1;
End
Respuestas:
Puede usar la
microtime
función para esto. De la documentación :Ejemplo de uso:
fuente
microtime(true)
si quieres hacer cálculos con el valor de retorno.get_as_float
astrue
) le dará resultados en segundos , según la documentación de PHP.get_as_float
es asítrue
,microtime()
devuelve el valor que representa los segundos ...$time = microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"];
(Más información en una respuesta a continuación .)Se puede usar
microtime(true)
con los siguientes modales:Ponga esto al comienzo de su archivo php:
// su código de script va aquí
Pon esto al final de tu archivo php:
Producirá el resultado
minutes
.fuente
Puede usar
REQUEST_TIME
desde la$_SERVER
matriz superglobal. De la documentación :De esta manera, no necesita guardar una marca de tiempo al comienzo de su secuencia de comandos. Simplemente puedes hacer:
Aquí,
$time
contendría el tiempo transcurrido desde el inicio de la secuencia de comandos en segundos, con precisión de microsegundos (por ejemplo,1.341
durante 1 segundo y 341 microsegundos)Más información:
Documentación de PHP :
$_SERVER
variables ymicrotime
funciónfuente
$start = $_SERVER["REQUEST_TIME_FLOAT"]; $myscript = microtime(true); $bootstrap = $myscript - $start; ...do stuff ...; $myscripttime = microtime(true) - $myscript;
$myscripttime = microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"];
al final de su secuencia de comandos sin tener que guardar una marca de tiempo al principio.$time
contendrá la diferencia en segundos , no en microsegundos .1.1
equivale a 1 segundo + 100 microsegundos.Crear archivo loadtime.php
Que en el comienzo de su guión, después de
<?php
escribirinclude 'loadtime.php'; $loadtime=new loadTime();
Cuando la página se carga al final, se escribirá "Cargado en x segundos"
fuente
</html>
etiqueta de cierre que no es válidafuente
Ver microtime () .
fuente
Aquí hay una función que multiplica la ejecución de cualquier pieza de código PHP, al igual que lo hace el módulo timeit de Python: https://gist.github.com/flaviovs/35aab0e85852e548a60a
Cómo usarlo:
Resultado:
Descargo de responsabilidad: soy el autor de este Gist
EDITAR: timeit ahora es un proyecto independiente y autónomo en https://github.com/flaviovs/timeit
fuente
Tiene la idea correcta, excepto que está disponible una sincronización más precisa con la función microtime () .
Si lo que está dentro del bucle es rápido, es posible que el tiempo transcurrido aparente sea cero. Si es así, envuelva otro bucle alrededor del código y llámelo repetidamente. Asegúrese de dividir la diferencia entre el número de iteraciones para obtener una vez por vez. He perfilado un código que requería 10,000,000 iteraciones para obtener resultados de tiempo consistentes y confiables.
fuente
Pensé en compartir la función que armé. Esperemos que pueda ahorrarle tiempo.
Originalmente se usó para rastrear el tiempo de un script basado en texto, por lo que la salida está en forma de texto. Pero puede modificarlo fácilmente a HTML si lo prefiere.
Hará todos los cálculos por usted durante cuánto tiempo ha pasado desde el inicio del guión y en cada paso. Formatea toda la salida con 3 decimales de precisión. (Abajo a milisegundos)
Una vez que lo copie en la parte superior de su secuencia de comandos, todo lo que debe hacer es colocar las llamadas a la función recordTime después de cada pieza que desee cronometrar.
Copie esto en la parte superior de su archivo de script:
Para rastrear el tiempo que pasa, solo haz:
Por ejemplo:
Da resultados como este:
¡Espero que esto ayude a alguien!
fuente
Aquí hay un método muy simple y breve
fuente
si desea mostrar ese tiempo en segundos:
fuente
Aquí hay una implementación que devuelve segundos fraccionarios (es decir, 1.321 segundos)
fuente
Aquí está mi script para medir el tiempo promedio
fuente
Puede encontrar el tiempo de ejecución en segundo con una sola función.
fuente