Archive for May, 2005

Otra forma de medir el tiempo de ejecución de tus script

Wednesday, May 4th, 2005

En un artículo anterior explicaba la forma de medir el tiempo de ejecución de un script PHP, en este artículo explico exactamente lo mismo, pero esta vez usando funciones estandar de PHP.

Al igual que en el otro artículo, en este usaremos dos funciones time_start() y time_end(). La primera, time_start(), inicia el temporizador o cronómetro mientras que la segunda función, time_end(), termina el temporizador y devuelve el tiempo transcurrido desde la llamada a la función time_start().

Por lo tanto, cuando queramos mder el tiempo de ejecución de un script o un código, situaremos la función time_start() al principio de este código y time_end() al final del código.

Dicho esto, lo primero que haremos es crear un script que llamaremos “benchmark.php” y que contendrá las 2 funciones comentadas y que incluiremos en cualquier script cuyo tiempo de ejecución querramos medir.

Las funciones

El contenido de benchmark.php será:

< ?php
function time_start() {
global $starttime;
$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$starttime = $mtime;
}

function time_end() {
global $starttime;
$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
return ($mtime - $starttime);
}
?>

Como incluir las funciones en un script

Ahora supongamos que queremos obtener el tiempo de ejecución de cierto script llamado “actualizacion_bbdd.php”, con independencia de su contenido modificaremos este script de forma que quede así:

< ?php
// Incluir funciones de temporizador
include('benhcmark.php');

// Iniciar temporarizador
time_start();

// Contenido del script original

// Mostrar el tiempo de ejecución
echo time_end();
?>

Y esto es todo. Suerte!

Benchmarking tus scripts PHP

Monday, May 2nd, 2005

Este artículo muestra una sencilla forma de medir el tiempo de ejecución de tus scripts. Puede que no sea la forma mas fiable de hacerlo, pero es perfectamente válido en la mayoría de situaciones.

Advertencia: Para el correcto funcionamiento del script presentado en este artículo es necesario que vuestra instalación de PHP incluya la extensión BCMath. En Windows esta extensión está siempre disponible. En sistemas Unix puede que no este disponible, ya que es necesario compilar PHP con la opción “–enable-bcmath”. Si no tiene esta opción habilitada en le mostramos una forma alternativa de hacer lo mismo.

Aunque no resulte el método más fiable de medir el tiempo de ejecución de un script, es suficiente como para hacerte una idea del tiempo que precisa un script o algoritmo en ejecutarse. De esta forma podrás comparar fácilmente los tiempos de ejecución de distintos scripts e ir poco a poco aprendiendo a optimizar tus scripts al máximo, que es al fin y al cabo uno de los puntos más importantes a tener en cuenta al programar cualquier aplicación.

Para empezar, necesitaras incluir las siguientes dos funciones en el script que quieras medir:

< ?php
function timer_start() {
global $timeparts,$starttime;
$timeparts = explode(" ",microtime());
$starttime = $timeparts[1].substr($timeparts[0],1);
$timeparts = explode(" ",microtime());
}

function time_end() {
global $timeparts,$starttime;
$endtime = $timeparts[1].substr($timeparts[0],1);
return bcsub($endtime,$starttime,6);
}
?>

Para incluir estas funciones en el script a medir puedes hacerlo 1) pegando el código en el mismo script a medir o 2) pegar las funciones en un fichero aparte, por ejemplo, “benchmark.php” y posteriormente incluir este fichero en el script que quieras medir de la siguiente forma:

< ?php
include('benchmark.php');
?>

Una vez incluidas las funciones en tu script, debes llamar a la función time_start() justo antes del código a medir y a la función time_end() al final del código a medir.

Al final, un script que quieras medir, quedaría algo así:

< ?php
// incluir las funciones para medir el tiempo de ejecución
include('benchmark.php');

// iniciar el reloj
time_start();

// aquí el código que deseas medir
echo 'Hola Mundo';

terminar el reloj e imprimir el tiempo de ejecución
echo time_end();
?>

En definitiva, una forma fácil y rápida de medir el tiempo de ejecución de tus scripts para poder así encontrar los puntos críticos de tus aplicaciones e ir aprendiendo poco a poco a crear código optimizado.