¿Cuánto tarda, eh?

Si tienes ganas de saber cuanto tarde en ejecutarse ese código que escribiste en PHP o hacer pruebas para saber que bloque se esta tardando más, puedes hacer tus pruebas con esta clase (aunque es chiquita cualquier recomendación se agradece)

La clase:

<?php
    class benchmark{
 
        private $start;
        private $end;
 
        function startBenchmark(){
            $this->start= microtime(true);
        }
 
        function endBenchmark(){
            $this->end= microtime(true);
        }
 
        function getBenchmark(){
            $time = ($this->end$this->start);   
            return $time;
        }
    }
 
?>

Ahora el uso sería así de sencillo:

<?php
$test= new benchmark;
 
$test->startBenchmark();
 
// código que queremos probar. En este caso solo dormimos un rato :-)
usleep(2000000);
 
$test->endBenchmark();
 
echo “Tiempo de la prueba:.$test->getBenchmark();
 
?>

Lo que nos muestra, en este caso es:

Tiempo de la prueba: 2.00014305115

Entradas Relacionadas

Tags: ,

2 comments

  1. No seria mejor que, en lugar de encapsular tu codigo entre dos funciones, metas la funcion que quieres llamar y pasar argumentos?. Tiene mucho que no uso PHP, pero en python puedes hacer algo asi:

    import time

    class timeit:

        def timeit(self, func, *args): #Usamos una funcion timeit porque __init__ no puede devolver valores.

            c = time.time()

            result = func(*args)

            self.resulttime = time.time() – c

            return result

     

    t = timeit()

    result = t.timeit(time.sleep, 2000000) #Sleep es una funcion parte del modulo time.

    t.resultttime

     

    Es desde mi punto de vista, mas facil de usar, menos propenso a errores  y puedes reutilizar tu clase facilmente con solo usar la instancia y su metodo timeit.

     

    Saludos!

  2. Hola markuz, no se si te entendí ¿me dices que mejor lo deje de esta manera?:

    class benchmark{

        private $start;
        private $end;
      
        function __construct(){
            $this->start= microtime(true);
        }
      
        function endBenchmark(){
            $this->end= microtime(true);
        }
      
        function getBenchmark(){
            $time = ($this->end – $this->start);  
            return $time;
        }
    }

    $test= new benchmark;

    // código aqui
    usleep(2000000);

    $test->endBenchmark();

    echo \”Tiempo de la prueba: \”.$test->getBenchmark();

     

    Bueno eso creo que queda mejor no tiene sentido esa llamada inicial a una función independiente.

    Te comento que esto lo uso para, por ejemplo, ver que bloque de código va más rápido cuando tengo dos o más opciones.

Leave a comment