Clase Benchmark

Esta clase nos permite medir el tiempo que tarda nuestra aplicación en llegar desde un punto a otro. Para ello insertaremos una línea de código para definir el punto de partida. Mediante el método **mark()** propio de la clase Benchmark establecemos una marca de inicio y final.

Por ejemplo, para establecer una marca de inicio:

$this->benchmark->mark('inicio');

Y otra línea que marcar el punto final:

$this->benchmark->mark('final');

Por último, invocando el método **elapsed_time** con los nombres de las dos marcas definidas (la de inicio y final), obtenendremos el tiempo transcurrido entre dichas dos marcas de tiempo.

Para el anterior ejemplo:

$tiempo = $this->benchmark->elapsed_time('inicio', 'final');

Ejemplo de uso de la clase Benchmark

La clase Benchmark puede ser utilizada en controladores, vistas y modelos. La forma de usar dicha clase es la siguiente:

  1. Establecemos un punto de partida.
  2. Establecemos un punto de parada o final.
  3. Ejecutamos el método de la clase Benchmark para ver los resultados.

Vamos a ver un ejemplo:

Creamos una acción dentro del controlador welcome llamado rendimiento():

...
function rendimiento()
{
   $this->benchmark->mark('inicio');
   for ($i=0; $i<10000;$i++) {
      $a = sha1($i . 'rendimiento');
   }
   //Y otra línea que marque el final:
   $this->benchmark->mark('final');
   echo 'Tiempo ' . $this->benchmark->elapsed_time('inicio', 'final');
}

Y accedemos al método rendimiento del controlador Welcome

http://localhost/proyecto/index.php/welcome/rendimiento/:

Tiempo 0.2728

Como vemos tarda 27 milisegundos. Si añadimos un par de ceros más en la condición de terminación del bucle:

...
for ($i=0; $i<100000;$i++) {
   $a =sha1($i . 'rendimiento');
}
...

Y volvemos a ejecutar

Tiempo 2.4016

Los puntos de referencia pueden tener cualquier nombre, siempre y cuando sean diferentes. Además podemos tener tantos puntos de referencia (inicio-fin) como queramos. Lo interesante de esta clase es que nos servirá de ayuda para comprobar si una determinada parte de nuestro código está tardando más tiempo de lo normal. Si una acción de un controlador o método de un modelo tarda demasiado tiempo en devolver la respuesta, podemos insertar varios puntos de referencia para identificar que parte del código está causando el retraso.

Etiquetas de ejecución total y consumo de memoria

La clase Benchmark nos proporciona de forma automática dos cálculo que nos pueden resultar interesantes como son el tiempo transcurrido desde el momento en que CodeIgniter arranca hasta el momento en el que se envía la salida final al navegador y la cantidad de memoria consumida por todo el sistema.

Para obtener el tiempo transcurrido podemos incluir este código PHP en cuaquier vista:

<?php echo $this->benchmark->elapsed_time() ?>

Como vemos en el código anterior es el mismo método elapsed_time() utilizado anteriormente para calcular el tiempo entre dos puntos, excepto que no estamos pasando ningún parámetro. Cuando no pasamos ningún parámetro, CodeIgniter no detiene el benchmark hasta el envío de la salida final al navegador. Destacar que no importa donde coloquemos el código anterior que devuelve el tiempo total ya que el cálculo seguirá funcionando hasta el final.

Existe una alternativa a usar código PHP en la vista donde llamamos al método elapsed_time() de la clase Benchmark y es utilizar una pseudo-variable llamada elapsed_time. La usaríamos de esta forma:

{elapsed_time}

Esta etiqueta se usa en la vista **welcome_message.php** cuando descargamos CodeIgniter y ejecutamos correctamente la página welcome. Este es el código que hay en esa plantilla:

<p><br />Page rendered in {elapsed_time} seconds</p>

Y el resultado:

Tiempo en renderizar la página

Para obtener la cantidad de memoria consumida por todo el sistema podemos usar el método memory_usage() de la clase Benchmark. Podemos usar este código PHP en cuaquier vista:

<?php echo $this->benchmark->memory_usage() ?>

Destacar que este método memory_usage() sólo se puede usar en ficheros vista, ya que, el consumo total de memoria corresponderá al de toda la aplicación.

También existe una pseudo-variable llamada memory_usage para no usar código PHP en la vista. La usaríamos de esta forma:

{memory_usage}

Son dos variables que podemos colocar en nuestro fichero pie de página y así obtener el tiempo total y el consumo de memoria consumido.

results matching ""

    No results matching ""