Manera precisa de medir los tiempos de ejecución de scripts php
Quiero saber cuántos milisegundos tarda en ejecutarse un bucle for de PHP.
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
Puedes usar la microtime
función para esto. De la documentación :
microtime
— Devuelve la marca de tiempo actual de Unix con microsegundos
Si
get_as_float
se establece enTRUE
,microtime()
devuelve un valor flotante, que representa el tiempo actual en segundos desde la época de Unix con una precisión del microsegundo más cercano.
Uso de ejemplo:
$start = microtime(true);
while (...) {
}
$time_elapsed_secs = microtime(true) - $start;
Puedes usarlo microtime(true)
con los siguientes modales:
Pon esto al comienzo de tu archivo php:
//place this before any script you want to calculate time
$time_start = microtime(true);
// tu código de script va aquí
// do something
Pon esto al final de tu archivo php:
// Display Script End time
$time_end = microtime(true);
//dividing with 60 will give the execution time in minutes, otherwise seconds
$execution_time = ($time_end - $time_start)/60;
//execution time of the script
echo '<b>Total Execution Time:</b> '.$execution_time.' Mins';
Le dará como resultado minutes
.
Puede utilizar REQUEST_TIME
desde la $_SERVER
matriz superglobal. De la documentación :
REQUEST_TIME
La marca de tiempo del inicio de la solicitud. (Disponible desde PHP 5.1.0.)
REQUEST_TIME_FLOAT
La marca de tiempo del inicio de la solicitud, con precisión de microsegundos . (Disponible desde PHP 5.4.0.)
De esta manera, no necesita guardar una marca de tiempo al comienzo de su secuencia de comandos. Simplemente puedes hacer:
<?php
// Do stuff
usleep(mt_rand(100, 10000));
// At the end of your script
$time = microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"];
echo "Did stuff in $time seconds\n";
?>
Aquí, $time
contendría el tiempo transcurrido desde el inicio del script en segundos, con precisión de microsegundos (por ejemplo, 1.341
durante 1 segundo y 341 microsegundos).
Más información:
Documentación PHP : $_SERVER
variables y microtime
funciones.
Crear archivo loadtime.php
<?php
class loadTime{
private $time_start = 0;
private $time_end = 0;
private $time = 0;
public function __construct(){
$this->time_start= microtime(true);
}
public function __destruct(){
$this->time_end = microtime(true);
$this->time = $this->time_end - $this->time_start;
echo "Loaded in $this->time seconds\n";
}
}
Que al principio de tu 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".