Tiempo de ejecución de una página

La función time() es muy poco exacta para cierto tipo de tareas. Cuando necesitamos medir tiempos con una precisión menor al segundo tenemos que usar microtime().

microtime() devuelve una cadena que contiene dos números separados por un espacio. Al igual que time(), devuelve el número de segundos transcurridos desde el 1 de enero de 1970 a las 12 de la noche (uséase, las 00:00:00). Sin embargo, microtime() no devuelve sólo el número de segundos como un dato entero, sino que también da la parte decimal. El primer número que devuelve esta función sería esa parte decimal y el segundo la parte entera (equivalente a lo que devolvería time()).

Esto parece un poco lioso; intentaré aclararlo. Si convertimos ambas cifras a números y las sumamos, nos daría el número de segundos transcurridos desde el célebre 1 de enero, pero con parte decimal. Y esa parte decimal es la que necesitamos cuando queremos medir tiempos con precisión. Pongamos el siguiente código en una página PHP:

$m = microtime();
$t = time();
print("Los segundos (versión precisa) transcurridos son $m<br>");
print("Los segundos (versión entera) transcurridos son $t<br>");

Nos devolvería algo como:

Los segundos (versión precisa) transcurridos son 1037896550
Los segundos (versión entera) transcurridos son 0.07883300 1037896550

1037896550 son los segundos transcurridos desde el célebre 1 de enero de 1970. Si emplearamos la función date() para formatear el número:

print(date("h:i:s a l F j, Y", $t)."<br>");

Nos devolvería "05:37:22 pm Thursday November 21, 2002".

Medir el tiempo de ejecución de la página

Para poder hacer algo útil con microtime() tenemos que extraer los números de la cadena:

$comienzo = explode(" ", $m);
print("Los microsegundos son " . $comienzo[0] . "<br>");
print("Los segundos son " . $comienzo[1] . "<br>");

Podemos usar esta función para averiguar el tiempo que tarda el servidor en producir una página. Si al comienzo de la misma hemos colocado eso de $m = microtime() al final de la misma escribiremos:

$comienzo = explode(" ", $m);
$final = explode(" ", microtime());
$tiempo = ($final[1] + $final[0]) - ($comienzo[1] - $comienzo[0]);
echo "Esta página fue generada en $tiempo segundos";

No obstante, una medición aislada no suele ser significativa si lo que deseamos es saber qué páginas (o secciones dentro de una misma página) tardan más para ver que conviene optimizar. Para eso conviene hacer un buen número de mediciones y sacar la media.

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
ARTÍCULO ANTERIOR

SIGUIENTE ARTÍCULO

¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.