¿Cómo imprimo en un cuadro de texto o en la salida el tiempo que el programa se está ejecutando?Tiempo de ejecución del programa
Quiero que se muestre en un bucle for, para saber cuánto tiempo necesita cada bucle for.
¿Cómo imprimo en un cuadro de texto o en la salida el tiempo que el programa se está ejecutando?Tiempo de ejecución del programa
Quiero que se muestre en un bucle for, para saber cuánto tiempo necesita cada bucle for.
Usted podría intentar:
DateTime dt = DateTime.Now;
for (.......)
{
}
TimeSpan ts = DateTime.Now - dt;
textbox1.Text = ts.TotalMilliseconds.ToString();
o (según la MSDN) si necesita una mejor resolución
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
for (.......)
{
}
stopWatch.Stop();
textbox1.Text = stopWatch.ElapsedMilliseconds.ToString();
[MSDN] (http://msdn.microsoft.com/en-us/library/system.datetime. now.aspx) documentación específicamente informa ** en contra ** usando la clase DateTime para fines de evaluación comparativa. – R0MANARMY
@ R0MANARMY: sí, tienes razón. Edité mi publicación incluyendo ambas soluciones. Gracias – Marco
Puedes usar 'stopWatch.ElapsedMilliseconds' directamente y deshacerte de las conversiones TimeSpan intermedias – sll
var watch = System.Diagnostics.Stopwatch.StartNew();
for()
{
// ..
}
watch.Stop();
// Format 00:00:02.0001008
string elapsed = watch.Elapsed.ToString();
// Milliseconds like 2000 for 2 seconds
string elapsedMs = watch.ElapsedMilliseconds.ToString();
System.Diagnostics.Debug.WriteLine(elapsed);
+1 para usted, porque su respuesta fue la primera y es ¡¡correcto!! – Marco
algo como esto:?
DateTime start = DateTime.UtcNow;
//... processing ...
DateTime end = DateTime.UtcNow;
Syste.Diagnostics.Debug.WriteLine((end - start).ToString());
[MSDN] (http://msdn.microsoft.com/en-us/library/system.datetime.now.aspx) documentación específicamente informa ** en contra ** utilizando la clase DateTime para fines de evaluación comparativa. – R0MANARMY
Seguro que sé que hay temporizadores más finos, esto es bueno si quiere ver segundos o minutos ... :) –
Se puede almacenar la fecha y hora actuales en el inicio de la aplicación, a continuación, crear un temporizador que dispara cada segundo. Cuando se dispara, obtienes el DateTime actual, restarlo para obtener el TimeSpan y usarlo para llenar tu cuadro de texto.
Agregue estas dos líneas: entre su bucle For o entre el código donde desea probar la velocidad de funcionamiento.
Debug.WriteLine(DateTime.Now.ToLongTimeString());
--your code
Debug.WriteLine(DateTime.Now.ToLongTimeString());
Esto no será preciso porque no solo estará midiendo cuánto tiempo tardó en ejecutarse el código, sino cuánto tiempo tardó en convertir un DateTime en una cadena + ejecutar el código. Si el código se ejecuta en algo del orden de minutos, algunos milisegundos serán insignificantes, pero para una ejecución más corta podría marcar la diferencia. – R0MANARMY
@Romanarmy, está en lo correcto, si es algo así como un proyecto nuclear crítico. Y como sabe, la mayoría de los proyectos que desarrollamos todos los días son Aplicaciones Web Nucleares. –
no, pero todos hemos escrito código que se ejecuta en un ciclo cerrado, y hacerlo menos eficiente significa una experiencia de usuario deficiente porque la IU se bloquea por un segundo cada vez que un usuario hace clic en un botón. – R0MANARMY
Tome un vistazo a este artículo: [C# Timing rendimiento de la función con la clase Cronómetro] (http://www.dijksterhuis.org/timing-function-performance-stopwatch-class/) – R0MANARMY
Bueno, se establece el temporizador, ejecuta el programa, detiene el temporizador y escribe la hora en un cuadro de texto. ¡Fácil! Para ser más serio, pruebe http://msdn.microsoft.com/en-us/library/system.datetime.now.aspx y '.Subtract()' – alf