Club.NET Almería

Plataforma .NET de Ingenieros/Ingenieros Técnicos en Informática de Almería
¡Bienvenid@ a Club.NET Almería! Iniciar sesión | ÚNETE a la web | Ayuda
en Buscar
Principal Blogs Foros Imágenes Descargas

Cronometrar el tiempo con precisión en C#

Último artículo 06-12-2008, 2:51 escrito por amarquez. 3 respuestas.
Ordenar mensajes: Anterior Siguiente
  •  06-10-2008, 1:25 2466

    Cronometrar el tiempo con precisión en C#

    Si alguna vez hemos necesitado alguna técnica para medir el tiempo transcurrido entre dos operaciones (vamos, un cronómetror), por ejemplo como cuánto tiempo tarda una imagen en renderizarse, o cuántos milisegundos emplea una operación en terminar para identificar cuellos de botella,... aquí se presentan dos técnicas distintas para construir cronómetros con C#:

    Técnica fácil y rápida:

    using System.Diagnostics;
    /*
     * Escribo mi programa...
     */
    ...     // Llego a la parte que quiero cronometrar
        Stopwatch temporizador;
        temporizador = Stopwatch.StartNew();
       /*
        *  ... Algunas operaciones por aquí
        */
        //Compruebo el tiempo transcurrido
        System.Console.WriteLine(temporizador.Elapsed.Seconds.ToString());

    Técnica más artesanal (y por tanto que permite mayor personalización de opciones)

    //Guarda la hora justo antes del proceso a cronometrar  
    DateTime tiempo1 = DateTime.Now;  
      
    /* 
     * ... Algun cómputo por aquí ... 
     */  
      
    //Guarda la hora al finalizar  
    DateTime tiempo2 = DateTime.Now;  
      
    //Crea un "intervalo temporal"  
    TimeSpan total = new TimeSpan(tiempo2.Ticks - tiempo1.Ticks);  
      
    //Ya puedes mostrar en pantalla o guardar en una cadena  
    // (o lo que sea) el tiempo transcurrido (con total precisión)  
    System.Console.WriteLine(total.ToString()); 

     


    Fullbyte Alchemist
  •  06-11-2008, 3:46 2474 en respuesta a 2466

    Re: Cronometrar el tiempo con precisión en C#

    Es mas precisa la primera opcion. Pues el tiempo que la plataforma .NET no esta ejecutando, ese tiempo no se controla y puede ser asignado a una de las hebras, erroneamente. Imagino que Diagnostics contabiliza el tiempo que no esta la "maquina virtual .NET" en accion en favor de otras tareas como tiempo no computable. Por esto DateTime.Now no es una buena opcion.


     


    José Antonio Álvarez Bermejo.
    - - - disclaimer - - -
    Las opiniones son como el olor corporal, a cada uno le gusta el suyo. No te esfuerces en oponerte a mi opinión por que esa es tú opinión y a mi me trae sin cuidado.
  •  06-11-2008, 4:41 2476 en respuesta a 2474

    Re: Cronometrar el tiempo con precisión en C#

    Esto es interesante. ¿Has probado la ejecución de ambos algoritmos para ver los resultados que arrojan? Habría que hacer varias ejecuciones para tener una cantidad de muestras representativa.
  •  06-12-2008, 2:51 2479 en respuesta a 2476

    Re: Cronometrar el tiempo con precisión en C#

    Nop, no he hecho experimentos, ya que de momento me he limitado a investigar distintas alternativas. La primera aproximación que he utilizado ha sido usando los dos DateTime y calculando la diferencia, mientras que ahora uso la versión del StopWatch (es más sencillo y claro de utilizar).


    Fullbyte Alchemist
Ver como una fuente de noticias RSS en XML
Ofrecido por Community Server (Personal Edition)