Skip navigation.

kill -9 3620

...

PERFORMANCE

, ,

Estos dias en la uni nos han pedido medir el "performance" de algunos algoritmos de busqueda y ordenamiento.

Pero como nos dan la libertad de desarrollar en "lo que es usted guste" desarrollo en Perl y pues me di a la tarea de investigar como medir el rendimiento y uso de cpu del algoritmo y se hace asi:

use Benchmark;

$Tinicial = new Benchmark;

print "HOLA MUNDO";

$Tfinal = new Benchmark;

$Ttotal = timediff($Tinicial, $Tfinal);

print "tiempo de ejecucion: ",timestr($Ttotal),"\n";

Su salida es algo como esto

2 wallclock secs (-0.20 usr + 0.00 sys = -0.20 CPU)

donde:

*2 wallclock secs: es el tiempo que tardo en ejecutar el codigo.

*0.20 usr: ni idea que quiere decir :frown:.

*0.00 sys: lo mismo que el anterior :frown::frown:.

*0.20 CPU: uso de cpu para ejecutar el codigo.

Esto se logra con Benchmark

Pero como mis compañeros no desarrollan en Perl :frown: lo estan haciendo en java, pero por el momento no me interesa saber como se hace en java, asi que busque como se logra esto en mono (C#) y buscando y buscando me encontre con un namespace llamado System.Diagnostics y pues la forma en la que lo implemente me muestra el resultado en milisegundos.

using System;
using System.Diagnostics ;

namespace primos
{
 class MainClass
 {
  public static void Main(string[] args)
  {
    System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
    watch.Start();

    Console.WriteLine ("Hola Mundo");

    System.Threading.Thread.Sleep(100);
    watch.Stop();
    System.Console.WriteLine("Tiempo de ejecucion: {0}", watch.ElapsedMilliseconds);
  }
 }
}

El motivo del cual lo investige para mono es que queria comparar 2 codigos, uno con varias comparaciones (if) y otro con ciclos (for) pero que hacen lo mismo, y conclui que los if ocupan un poco mas de procesador que las iteraciones, a pesar de que con el if se hacen la mitad (+ o -) de iteraciones, ¿que es mejor? iteraciones o comparaciones...

DESILUCIONNetBeans IDE 6.1 Beta

Comments

Anonymous 24. February 2008, 16:46

Mauro writes:

Hola,
otro criterio mas general para saber que tan complejo es un algoritmos es usar la "complejidad computacional":

http://en.wikipedia.org/wiki/Computational_complexity_theory

en general, es una medida abstracta del numero de instrucciones a ejecutar en terminos de n, donde n es el tamaño del conjunto de busqueda u ordenamiento (aunque puede ser aplicado a cualquier algoritmo).

Anonymous 24. February 2008, 23:58

Not so anonymous writes:

Iba a comentar lo mismo que el wey de arriba.
Solo como respuesta corta son mejores los if, (basandose en la complejidad computacional).

Anonymous 25. February 2008, 01:48

Gustavo writes:

Creo que una buena forma de medir tiempos es utilizando un profiler ya que tienen mas optimizaciones para esas tareas.

Si desarrollas en .Net bajo windows hay uno muy bueno, propietario que es de JetBrains, los que hacen intellidea y refactor pro, se llama jetbrains profiler.

Para mono, creo que tiene integrado uno en el core, para medir el tiempo puedes pasarle un parametro profile:

mono --profile=default:stat aplicacion.exe

Eso debería darte información de tiempos que según lo que leí es lo que te interesa. Hay mas información para hacer profilings en mono aquí:

http://www.mono-project.com/Performance_Tips

hreyes 25. February 2008, 03:10

gracias tomare en cuenta sus comentarios. :up:

Anonymous 26. February 2008, 22:01

Turbo writes:

Del manual de unix:

time(1)

NAME
time - time a simple command or give resource usage

DESCRIPTION
The time command runs the specified program command with the given
arguments. When command finishes, time writes a message to standard
error giving timing statistics about this program run. These statis-
tics consist of (i) the elapsed real time between invocation and termi-
nation, (ii) the user CPU time (the sum of the tms_utime and tms_cutime
values in a struct tms as returned by times(2)), and (iii) the system
CPU time (the sum of the tms_stime and tms_cstime values in a struct
tms as returned by times(2)).

Y bueno, times(2) dice lo demás.

How to use Quote function:

  1. Select some text
  2. Click on the Quote link

Write a comment

Comment
(BBcode and HTML is turned off for anonymous user comments.)

If you can't read the words, press the small reload icon.


Smilies

Download Opera, the fastest and most secure browser