Manera precisa de medir los tiempos de ejecución de scripts php

Resuelto DomingoSL asked hace 54 años • 17 respuestas

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
DomingoSL avatar Jan 01 '70 08:01 DomingoSL
Aceptado

Puedes usar la microtimefunción para esto. De la documentación :

microtime— Devuelve la marca de tiempo actual de Unix con microsegundos


Si get_as_floatse establece en TRUE, 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;
 avatar Jun 05 '2011 21:06

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.

Aditya P Bhatt avatar Aug 20 '2013 13:08 Aditya P Bhatt

Puede utilizar REQUEST_TIMEdesde la $_SERVERmatriz 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í, $timecontendría el tiempo transcurrido desde el inicio del script en segundos, con precisión de microsegundos (por ejemplo, 1.341durante 1 segundo y 341 microsegundos).


Más información:

Documentación PHP : $_SERVERvariables y microtimefunciones.

clemlatz avatar Oct 17 '2013 11:10 clemlatz

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 <?phpescribirinclude 'loadtime.php'; $loadtime=new loadTime();

Cuando la página se carga al final, se escribirá "Cargado en x segundos".

Solo Omsarashvili avatar Mar 18 '2013 15:03 Solo Omsarashvili