C# Stopwatch – měření běhu kódu


Máte nějaký dlouho trvající kód a chcete si změřit jako dlouho jeho běh trvá? Ať kvůli změření načítání, testování, či ladění, tak nejjednodušším a nejrychlejším řešením je za tímto účelem v C# použití třídy Stopwatch, která je součástí .NET Frameworku.

Základní ukázkový příklad:


using System;
using System.Diagnostics;
using System.Threading;

namespace StopwatchSample
{
  public class Program
  {
    public static void Main(string[] args)
    {
      Stopwatch stopwatch = new Stopwatch();
      stopwatch.Start();
      for (int i = 0; i < 100; i++)
      {
        Thread.Sleep(i);
      }
      stopwatch.Stop();
      Console.WriteLine("Uplynulý čas: {0}", stopwatch.Elapsed); // ~5s
      Console.ReadLine();
    }
  }
}

Běžně to bude ale spíše nějak následovně:


...
Stopwatch stopwatch = Stopwatch.StartNew();  // inicializuje novou instanci Stopwatch, nastaví uplynulý čas na 0 a začne měřit

// můj dlouho trvající kód apod.

stopwatch.Stop();
...

Obslužné metody a informační property:


stopwatch.Start(); // spustí nebo obnoví měření uplynulého času
stopwatch.Stop(); // zastaví měření uplynulého času
stopwatch.Restart(); // zastaví měření, obnoví uplynulý čas na 0 a začne znovu měřit uplynulý čas
stopwatch.Reset(); // zastaví měření a obnoví uplynulý čas na 0 

TimeSpan elapsed = stopwatch.Elapsed; // celkový uplynulý čas měří aktuální instance jako TimeSpan
long elapsedMilliseconds = stopwatch.ElapsedMilliseconds; // celkový uplynulý čas měří aktuální instance v milisekundách
long elapsedTicks = stopwatch.ElapsedTicks; // celkový počet "ticknutí" během měření aktuální instance 
bool isRunning = stopwatch.IsRunning; // označení, zda běží měření

Více na MSDN: Stopwatch Class

, ,

  1. Zatím žádné komentáře.

Komentáře jsou uzavřeny.