KumbiaPHP  beta2
Framework PHP
 Todo Estructuras de Datos Namespaces Archivos Funciones Variables Páginas
benchmark.php
Ir a la documentación de este archivo.
1 <?php
31 final class Benchmark
32 {
33 
39  private static $_benchmark;
40  private static $_avgload = 0;
41 
47  public static function start_clock($name)
48  {
49  if (!isset(self::$_benchmark[$name])) {
50  self::$_benchmark[$name] = array('start_time' => microtime(), 'final_time' => 0, 'memory_start' => memory_get_usage(), 'memory_stop' => 0, 'time_execution' => 0);
51  }
52  }
53 
60  private static function _stop_clock($name)
61  {
62  if (isset(self::$_benchmark[$name])) {
63  if (PHP_OS == 'Linux') {
64  $load = sys_getloadavg();
65  } else {
66  $load = 0;
67  }
68  self::$_avgload = $load[0];
69  self::$_benchmark[$name]['memory_stop'] = memory_get_usage();
70  self::$_benchmark[$name]['final_time'] = microtime();
71  list ($sm, $ss) = explode(' ', self::$_benchmark[$name]['start_time']);
72  list ($em, $es) = explode(' ', self::$_benchmark[$name]['final_time']);
73  self::$_benchmark[$name]['time_execution'] = number_format(($em + $es) - ($sm + $ss), 4);
74  return self::$_benchmark[$name]['time_execution'];
75  }
76  }
77 
83  public static function memory_usage($name)
84  {
85  if (self::$_benchmark[$name]) {
86  self::$_benchmark[$name]['memory_usage'] = number_format((self::$_benchmark[$name]['memory_stop'] - self::$_benchmark[$name]['memory_start']) / 1048576, 2);
87  return self::$_benchmark[$name]['memory_usage'];
88  } else {
89  throw new KumbiaException("No existe el Benchmark para el nombre: '$name', especificado \n");
90  }
91  }
92 
98  public static function time_execution($name)
99  {
100  if (isset(self::$_benchmark[$name])) {
101  return self::_stop_clock($name);
102  } else {
103  throw new KumbiaException("No existe el Benchmark para el nombre: $name, especificado \n");
104  }
105  }
106 
111  public static function test($func, $loops)
112  {
113  self::start_clock($func);
114  ob_start();
115  for ($i = 1; $i <= $loops; $i++) {
116  eval($func);
117  }
118  ob_end_flush();
119  $time = self::time_execution($func);
120  echo '** Funcion: ', $func;
121  echo $loops, ' veces';
122  echo ' Tiempo: ', $time;
123  }
124 
125 }