¡Ya estamos en Twitter!

Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad

Uso de Benchmark

por Uriel Lizama

Introducción

Con este tutorial vamos a aprender a tomar el tiempo que tardan nuestras funciones en ejecutar, así como los recursos que toman.

El módulo

Hay un módulo de perl que nos permitirá hacer esto, se llama Benchmark. Lo que vamos a hacer es medir el tiempo que tarda nuestro programa en ejecutar, y la cantidad de recursos que toma.

Hacer esto es sumamente importante, pues un buen programa debe de tomar el menor tiempo posible y debe de consumir la menor cantidad de recursos posibles, así que si puedes mejorarlo, hazlo.

Midiendo

Lo primero que debemos de hacer es cargar el módulo dentro de nuestro programa, eso lo hacemos con:

use Benchmark;

Ahora vamos a guardar el tiempo inicial y otra información dentro de una variable que vamos a llamar "$tiempo_inicial", lo cual haremos creando un nuevo objeto.

my $tiempo_inicial = new Benchmark;

Par hacer la prueba en este caso vamos a ejecutar un loop, dentro de un loop, hice esto para que tarde algunos segundos de manera que podamos ver realmente como funciona el Benchmark.

my $i = 0;

for($i = 0; $i < 10000; $i++){
my $c;
for($c = 0; $c < 1000; $c++){
my $d = $c + $i;
}
}

Después de haberse ejecutado nuestro loop, entonces crearemos otro objeto Benchmark, pero esta vez es para tomar las medidas al final de que nuestro código fue ejecutado.

my $tiempo_final = new Benchmark;


Ahora vamos a pedir el resultado de la diferencia de nuestras variables con un función de Benchmark que se llama "timediff".

my $tiempo_total = timediff($tiempo_final, $tiempo_inicial);

Ya finalmente tenemos lo que tomo y la cantidad de recursos que se llevo el ejecutar nuestro código, pero todo esta en números consecutivos que no tienen coherencia, es por ello que tenemos que ejecutar otra funcion de Benchmark llamada "timestr", para que nos muestre el resultado en algo que podamos entender:

print "El código tomo:",timestr($tiempo_total),"\n";

Interprentando el resultado

Al ejecutar el código en mi Latpot esto fue el resultado:

El código tomo: 8 wallclock secs ( 7.79 usr + 0.00 sys = 7.79 CPU)

Como vemos el código fue muy desgastante para mi procesador, la primera parte que dice "8 wallclock seconds" significa que tomo 8 segundos de nuestro tiempo, hay que recordar que los segundos del CPU pueden ser muy diferentes a los de nosotros, es por ello que dice "wallclock seconds", pues son segundos de un reloj común.

Y luego, el resultado final y más importante "7.79 CPU", esto es el porcentaje de CPU que uso el código, es por ello que digo que fue algo desgastante, y fue debido a las operaciones matemáticas que se estaban haciendo en el código.

¿Cuánto debe de tomar mi código en ejecutar?¿Cuántos recursos debería de usar?

Esas son preguntas que no puedo contestar, no todos los programas llevan la misma cantidad de tiempo o recursos, depende de muchos factores, como pueden ser la cantidad de funciones que hay, que tipo de operaciones estas haciendo, la rápidez de la computadora, etc...

Lo que si se, es que te conviene checar tu código por lo menos 2 o 3 veces antes de ponerlo como la versión final, siempre hay lugares donde puedes salvar un poco de tiempo o de recursos.

¿Quiéres más tutoriales como este? Escribir tutoriales toma una gran cantidad de tiempo y esfuerzo. Si este tutorial te ayudó a aprender o a solucionar algo, por favor considera dejar alguna donación en apoyo a Perl en Español.

Cliquea en el botón de abajo para dejar tu donación por medio de PayPal.

Comparte:
Categorías de Tutoriales:
En Nuestros Foros:

    Software error:

    junk after document element at line 1, column 32, byte 32 at /usr/lib64/perl5/vendor_perl/XML/Parser.pm line 187.
    

    For help, please send mail to the webmaster ([email protected]), giving this error message and the time and date of the error.

  • Entra a los foros »
Socializa:
Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Perl en Español es mantenido con Movable Type
Todo el contenido de Perl en Español está bajo una licencia CC:
Creative Commons License