Cronometrar el tiempo con .NET (C#)

En el post anterior sobre paralelismo se ha hecho uso de una técnica muy sencilla (y eficaz) para medir tiempos de ejecución para la plataforma .NET,

Una utilidad es por ejemplo, controlar el tiempo que se tarda en finalizar una tarea para poder identificar (a mano) cuellos de botella, programar un cronómetro, etc.

//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());

11 comentarios para “Cronometrar el tiempo con .NET (C#)”

  1. jaberme Dice:

    Me temo que cronometrar una hebra nunca ha sido tarea sencilla entre otras cosas porque tú no controlas cuando se desplanifica una para que entre en juego otra ( y esto afecta a los cronos), no creo que .NET permita elaborar una medida temporal entre hebras. Siempre existirá el famoso clock screw.

  2. jaberme Dice:

    by the way, la forma de poner el código fuente ¿es propia de este theme? Me gusta mucho, es el antiguo papel “pijama”. Imagino que no habrás llegado a imprimir en estos papeles.

    :-)

  3. Antonius Dice:

    Viene con el tema, usando las etiquetas <code> y sustitiyendo los tabuladores por espacios fijos con un par de &nsbp;.
    Tienes razón en lo de no controlar la planificación de las hebras para medir los tiempos en cada una, pero toda herramienta tiene sus limitaciones. Es labor del desarrollador el poder superarlas con su ingenio.

    Por cierto, revisando la ayuda he visto otro metatag muy curioso para publicar el código fuente (con resaltado de sintaxis y otras cosas). Ya te comentaré cuando te vea :)

  4. jaberme Dice:

    Me temo que el ingenio no es herramienta suficiente para saber a quien computar los clocks de reloj en los que .NET no se ejecuta por dar paso al sistema operativo. En esos ticks de reloj, el cronometro de las hebras avanza, pero ellas no hacen computacion alguna.

    El ingenio es una herramienta util, pero no hace milagros.

  5. xancliman Dice:

    yo utilizo esto:
    Stopwatch temporizador;

    temporizador = Stopwatch.StartNew();

    temporizador.Elapsed.Seconds.ToString()

  6. Antonius Dice:

    Para quien no lo sepa, la clase Stopwatch se encuentra en System.Diagnostics, así que toca importarlo con una directiva “using” por si alguien ha intentado usarlo y no le funcionaba :)

  7. Salomón Dice:

    Gracias, realmente interesante y útil.

  8. misael Dice:

    gracias teniamos como 2 horas buscando como hacer eso xD jajaj sale gracias

  9. espinete Dice:

    Stopwatch es lo más óptimo que se pueda utilizar para calcular tiempos ??

    Saludos.


Escribe un comentario