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 respuestas to “Cronometrar el tiempo con .NET (C#)”

  1. jaberme Says:

    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 Says:

    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 Says:

    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 Says:

    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 Says:

    yo utilizo esto:
    Stopwatch temporizador;

    temporizador = Stopwatch.StartNew();

    temporizador.Elapsed.Seconds.ToString()

  6. Antonius Says:

    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 Says:

    Gracias, realmente interesante y útil.

  8. misael Says:

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

  9. espinete Says:

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

    Saludos.


Deja un comentario