Con la clase Time Profiler se puede medir el tiempo que tarda en ejecutarse una determinada función.
La clase regresa el resultado de la función y el tiempo que se necesitó para ejecutar la función en cuestión de segundos y milisegundos.
Autor: Tony L. Requena
Descargar: Time Profiler
Código de la clase class.timeprofiler.php
<?php
/*------------------------------------------------------------------------------
** File:            class.timeprofiler.php
** Class:           Time Profiler
** Description:     
** Version:         1.0.1
** Created:         11-Jul-2014
** Author:          Tony L. Requena
** Homepage:        www.phpmyipcam.com 
**------------------------------------------------------------------------------
** COPYRIGHT (c) 2014 Tony L. Requena
**
** The source code included in this package is free software; you can
** redistribute it and/or modify it under the terms of the GNU General Public
** License as published by the Free Software Foundation. This license can be
** read at:
**
** http://www.opensource.org/licenses/gpl-license.php
**
** This program is distributed in the hope that it will be useful, but WITHOUT 
** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
** FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 
**------------------------------------------------------------------------------
**
** Usage:
** 
    function imprime(){
        sha1(md5("Hello"));
    }
    
    
    function blah($n=1){
     for($i = 0; $i<= $n; $i++){
      $a = $i;
     }
    }
    
    function getContent($url){
        return file_get_contents($url);
    }
    $timer = new TimeProfiler("blah", 500, array(100));
    echo "".$timer->getMicro()." µs (".$timer->getMili()." ms)";
    
    echo "<br />";
    
    $timer = new TimeProfiler("imprime");
    echo $timer->getMicro()." µs (".$timer->getMili()." ms)";
    $timer = new TimeProfiler("getContent",1,array('http://server.sivu.es/testfile.txt'));
    echo $timer->getMicro()." µs (".$timer->getMili()." ms)<br />";
    var_dump($timer->funcOutput()); /*** NEW  NEW NEW **/
**
**------------------------------------------------------------------------------ */
class TimeProfiler{ 
    private $microseconds = 0; 
    public $start = 0; 
    public $function; 
    public $end = 0; 
    public $miliseconds; 
    function __construct($func, $iterations=1, $arguments = NULL){ 
        $this->function = $func; 
        $this->microseconds = 0; 
        $this->start = microtime(true); 
         
        for($n=0;$n<$iterations;$n++){ 
            if($arguments==NULL){ 
                $this->val = call_user_func_array($func,array()); 
            }else{ 
                $this->val = call_user_func_array($func, $arguments); 
            } 
        } 
        $this->end = microtime(true); 
        $this->microseconds = $this->end - $this->start; 
        $this->miliseconds = round($this->microseconds * 1000);
        
        return $this->val; 
     
    }
    function funcOutput(){
        return $this->val;
    }
    function getMicro(){ 
        return $this->function.": ".sprintf('%f', $this->microseconds); 
    } 
    function getMili(){ 
        return $this->miliseconds; 
    } 
}
?>
 
No hay comentarios:
Publicar un comentario