Cómo estás?
mirá, te muestro un ejemplo de una clase que uso yo, para este tipo de mediciones. Le puse "Timer" y lo cierto es que me resulta bastante útil de vez en cuando.
Código PHP:
<?php
/**
* Class that handles the timer marks
* Useful for time comparisons and memory usage statistics
*
* @author Pablo Rigazzi <[email protected]>
*/
class Timer
{
/**
* Set of marks.
*
* @var array $_marks
* @private
* @static
*/
static private $_marks = array();
/**
* Adds a mark to the queue.
*
* @param string $name Name of the mark.
*
* @return void
* @public
* @static
*/
static public function mark($name) {
self::$_marks[] = array(
'name' => $name,
'mark' => microtime(true),
'muse' => memory_get_usage()
);
}
/**
* Prints object information.
*
* @return string
* @public
* @static
*/
static public function toString() {
$result = array();
for($i = 1; $i < count(self::$_marks); $i++) {
$tdelta = self::$_marks[$i]['mark'] - self::$_marks[$i-1]['mark'];
$mdelta = self::$_marks[$i]['muse'] - self::$_marks[$i-1]['muse'];
$result[] = sprintf('%s - %s: %.5f secs (Mem: %d Kb)',
self::$_marks[$i-1]['name'],
self::$_marks[$i]['name'],
$tdelta,
$mdelta / 1024);
}
--$i;
return "<!--\nTimer Information:" . PHP_EOL .
implode("\n", $result) . PHP_EOL .
"Total time / memory tracked : " .
sprintf('%.5f secs (Mem: %d Kb)',
self::$_marks[$i]['mark'] - self::$_marks[0]['mark'],
(self::$_marks[$i]['muse'] - self::$_marks[0]['muse']) / 1024) . PHP_EOL .
"Peak Memory Usage : " . memory_get_peak_usage(true) / 1024 . " Kb" . PHP_EOL .
"-->";
}
}
El método de uso es mucho muy sencillo. A lo largo de tu código, simplemente vas haciendo "marcas" con tu timer, como si estuvieras marcando una vuelta en una carrera o dejando "tags" en el ciclo de ejecución de tu sitio:
Código PHP:
Timer::mark('inicio');
Hago_algo();
Timer::mark('después de hacer algo');
// Sigue tu código y al finalizar, lo que hacés es :
echo Timer::toString();
Y listo, el método toString() devuelve la información de todos los puntos que marcaste, la diferencia de tiempo entre los distintos puntos, y el consumo de memoria en cada uno de los puntos, más la información de la máxima memoria que utilizó tu script en su ejecución.
Espero que te resulte útil.