<?
require_once "dateClass.php";
class cronoClass extends dateClass
{
private $_cronoStart = array();
private $_cronoStop = array();
private $_milliStart = array();
private $_milliStop = array();
private $_precision_milli = false;
public function set_precision_milli($precision_milli = false)
{
if (!is_bool($precision_milli))
throw new Exception("$precision_milli is not valid parameter",0);
$this -> _precision_milli = $precision_milli;
}
public function start($label = false)
{
if ($this -> _precision_milli)
{
$this -> _milliStart[$label] = $this -> get_Milliseconds();
$this -> _cronoStart[$label] = time();
return;
}
if ($label === false)
throw new Exception("You must define a crono label",0);
$this -> _cronoStart[$label] = $this -> get_Time(true);
}
public function stop($label = false)
{
if ($this -> _precision_milli)
{
$this -> _milliStop[$label] = $this -> get_Milliseconds();
$this -> _cronoStop[$label] = time();
return;
}
if ($label === false)
throw new Exception("You must define a crono label",0);
if (!isset($this -> _cronoStart[$label]))
throw new Exception("The label $label not exsist",0);
$this -> _cronoStop[$label] = $this -> get_Time(true);
}
public function get_diff_seconds($label = false)
{
$value1 = $this -> _cronoStop[$label] + $this -> _milliStop[$label];
$value2 = $this -> _cronoStart[$label] + $this -> _milliStart[$label];
return $value1 - $value2;
}
public function get_diff_media()
{
$keys = array_keys($this -> _milliStart);
for ($i = 0;$i< count($keys);$i++)
{
$tot += $this -> get_diff_seconds($keys[$i]);
}
return $tot / count($keys);
}
}
$cronometro = new cronoClass();
$cronometro -> set_precision_milli(true);
$i = 0;
$test = new dateClass();
for (;$i< 1000;$i++)
{
if ($i == 0) continue;
$cronometro -> start("test$i");
//sezione di test
try
{
$test -> set_Day("04");
//$test -> set_Month("12");
//$test -> set_Year("99");
//print_R($test -> toSource());
}
catch (Exception $e)
{
$data = $e -> getTrace();
echo $e -> getMessage() . " - generated in function " . $data[0]["function"];
}
$cronometro -> stop("test$i");
}
echo "<hr>" . $cronometro -> get_diff_media();
?>
|