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:
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ść:
Jeżeli nie zresetujemy obiektu, wówczas wykonanie metody Start() spowoduje naliczanie czasu począwszy od jego poprzedniej wartości.
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ć…