Medir el tiempo de ejecución de un Programa en C#

publicado por: Anonymous

Tengo ciertas dudas sobre cómo medir el tiempo de ejecución correctamente (programa que debe incluir procedimientos) en C# y quisiera saber si es que lo hice bien, ya que el realmente no estoy convencido de ello.
Ya que necesito comparar cada resultado por muy minuscula que sea la diferencia entre los números ingresados.

Pero lo que realmente requiero saber el método indicado para medir el tiempo de ejecución de todo el programa, aquí un fragmento del mismo:

_x000D_

_x000D_

  using System;_x000D_
using System.Collections.Generic;_x000D_
using System.Linq;_x000D_
using System.Text;_x000D_
using System.Threading;_x000D_
using System.Threading.Tasks;_x000D_
using System.Diagnostics;_x000D_
_x000D_
namespace FIterativo_x000D_
{_x000D_
class Program_x000D_
{_x000D_
    static void FibonnaciIterativo(int n)_x000D_
    {_x000D_
        Stopwatch stopwatch = new Stopwatch();_x000D_
_x000D_
        if (n < 0) throw new Exception("El parámetro debe ser positivo");_x000D_
        long ultimo = 1, penultimo = 1;_x000D_
        for (int k = 2; k <= n; k++)_x000D_
        {_x000D_
            long temp = penultimo; penultimo = ultimo; ultimo = ultimo + temp;_x000D_
        }_x000D_
        Console.WriteLine("El número {0} de la sucesión de Fibonnaci (via iterativa) es {1}", n, ultimo);_x000D_
_x000D_
        TimeSpan ts = stopwatch.Elapsed;_x000D_
        Console.WriteLine("Time elapsed: {0}", ts);_x000D_
    }_x000D_
_x000D_
    static void Main(string[] args)_x000D_
    {_x000D_
_x000D_
        do_x000D_
        {_x000D_
            Console.WriteLine("nEntre el número a buscar de Fibonnaci (Precione Enter para salir)");_x000D_
            string s4 = Console.ReadLine();_x000D_
            if (s4.Length == 0) break;_x000D_
            int k = Int32.Parse(s4);_x000D_
_x000D_
            FibonnaciIterativo(k);_x000D_
_x000D_
        } while (true);_x000D_
    }_x000D_
}_x000D_
}

_x000D_

_x000D_

_x000D_

Actualización: Lo hice más pequeño para que fuese más ententible.
Pero mi problema surge cuando quiero medir el tiempo, solo me sale “00:00:00”, y yo necesito que al menos me muestre algún milisegundo.

solución

La elección de StopWatch es correcta. Es la clase indicada para este tipo de trabajos, es ligera y muy útil.
Solo Falta que pongas a correr el StopWatch:

Stopwatch stopwatch = new Stopwatch();
stopWatch.Start();

O puedes hacerlo en una sola línea:

Stopwatch stopwatch = Stopwatch.StartNew();

Un emplo más completo sería:

Stopwatch sw = new Stopwatch(); // Creación del Stopwatch.
sw.Start(); // Iniciar la medición.

// haces tus cosas acá...

sw.Stop(); // Detener la medición.
Console.WriteLine("Time elapsed: {0}", sw.Elapsed.ToString("hh\:mm\:ss\.fff")); // Mostrar el tiempo transcurriodo con un formato hh:mm:ss.000
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *