Podczas naszej pracy często zdarza się nam zastanawiać jak szybko działa dany fragment kodu. Aby to sprawdzić wystarczy skorzystać z klasy Stopwatch znajdującej się w przestrzeni nazw System.Diagnostics.

Najczęściej będziemy korzystać z oferowanych przez obiekt tego typu metod Start() i Stop() oraz właściwości Elapsed. Sprawdźmy zatem jak długo potrwa pusta pętla przez cały zakres Int32:

  1 private static void StopwatchDemo()
  2 {
  3     Console.WriteLine(“For loop from 1 to {0} time test”, Int32.MaxValue);
  4     Stopwatch sw = new Stopwatch();
  5     sw.Start();
  6     for (int i = 0; i < Int32.MaxValue; i++) ;
  7     sw.Stop();
  8     Console.WriteLine(“Elapsed time {0}”, sw.Elapsed);
  9     Console.WriteLine(“Press [Enter] to close”);
10     Console.ReadLine();
11 }

A oto wynik działania kodu:

Jest też możliwość wielokrotnego wykorzystania obiektu Stopwatch używając metody Reset(), która zeruje jego wartość:

sw.Reset();
 

Jeżeli nie zresetujemy obiektu, wówczas wykonanie metody Start() spowoduje naliczanie czasu począwszy od jego poprzedniej wartości.

  1 private static void StopwatchNoResetDemo()
  2 {
  3     Console.WriteLine(“Stopwatch without Reset() test”);
  4     Stopwatch sw = new Stopwatch();
  5     for (int i = 0; i < 5; i++)
  6     {
  7         sw.Start();
  8         for (int j = 0; j < 10000000; j++) ;
  9         sw.Stop();
10         Console.WriteLine(“Elapsed time for i={0} loop: {1}”, i, sw.Elapsed);
11     }
12     Console.WriteLine(“Press [Enter] to close”);
13     Console.ReadLine();
14 }

 

A oto wynik:

 

Jak widać ta prosta do wykorzystania klasa pozwala dokładnie znaleźć miejsca, które są najwolniejsze i być może uda się je zoptymalizować…