<? 
 
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(); 
 
 
?>
 
 |