Está usted en Indice > Construcción > Lenguajes > PHP > Lecciones y Paso a Paso > Benchmarking de aplicaciones en PHP
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Benchmarking de aplicaciones en PHP


Es habitual encontrarnos con situaciones en las que necesitamos mejorar el rendimiento de nuestras aplicaciones PHP, bien para resolver situaciones en las que van más despacio, o simplemente por el hecho de querer hacerlas lo más óptimas que sea posible en cuanto a rendimiento. Para ello hay diversas funciones que nos ofrece PHP que podemos utilizar, aunque también hay utilidades ya programadas por otros desarrolladores que se han encontrado en la misma situación.

A continuación presento y explico una de estas utilidades desarrollada por mi. Se trata de una clase de nombre Benchmark, la cual se puede utilizar para realizar mediciones dentro de cualquier aplicación PHP. Dispone de la posibilidad de gestionar diferentes contadores, de forma que mediante una única instancia de la clase, podríamos controlar diferentes porciones del programa, obteniendo para cada una los datos que le correspondan.

El funcionamiento más sencillo de la clase se basa en tener un único contador, el contador por defecto, e ir mostrando por pantalla o mediante comentarios html, el tiempo que le ha costado llegar a cada punto de la aplicación. De esta forma podemos, viendo el código html de la página por ejemplo, ver en qué puntos se ha retardado más y atacar esa parte para intentar optimizarla.

<?php
   
include_once('Benchmark.class.php');
   
$bench =& new Benchmark();
   
// inicializamos el contador por defecto
$bench->timingStart();
   
// hacemos que la aplicación se duerma durante 2 segundos
usleep(2000);
echo "<!--".$bench->timingCurrent() . "-->";
   
// hacemos que la aplicación se duerma durante 8 segundos
usleep(8000);
echo "<!--".$bench->timingCurrent() . "-->";
   
// paramos el benchmarking
$bench->timingStop();
   
?>
El ejemplo que hemos visto es el más sencillo y aunque útil, tiene una pega. En el caso de que queramos obtener una información resumida de todos los puntos por los que ha pasado, tendríamos que andar mirando la página o su código fuente. Esto no tiene porqué ser mayor problema, pero si lo tenemos que hacer varias veces puede ser bastante molesto.

Para simplificar esta situación disponemos de la opción de utilizar puntos intermedios, o delta points. Estos puntos intermedios indican al benchmarking que nos interesa guardar el tiempo que se lleva procesado hasta el momento, de forma que luego podamos recuperarlos todos de forma conjunta. Para hacer esta recuperación hay tres métodos principales:

  • getDeltaPoints: nos devuelve una matriz con todos los puntos intermedios definidos para el contador que se le diga, indicando el nombre de cada punto y lo que costo llegar hasta ese punto desde el anterior.
  • getDeltaPointsHtmlTable: devuelve un string conteniendo una tabla html con la información de cada punto intermedio y el tiempo que costó llegar hasta él desde el punto anterior.

  • saveDeltaPointsToFile: añade al final del archivo que se le indique una nueva línea con la información del tiempo de cada punto intermedio, separándolos por “;”.

En el siguiente archivo comprimido está la clase así como varios ejemplos de utilización, espero que os sea de utilidad.




Autor: Patxi Echarte
http://www.eslomas.com/index.php/archives/2005/06/07/benchmarking-aplicaciones-php/

Usuarios que han visto este tema también han visto...

- Incluir en PHP un archivo programado en otro lenguaje
- Patrones de expresiones regulares para htaccess
- Imagen de validación de formularios con PHP
- Conectarse a MySQL desde PHP
- Subir base de datos MySQL vacia al servidor en PHP


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 06-09-2008 a las 21:34:44