Efektywny algorytm to taki, który w jak najkrótszym czasie zwraca żądany wynik. Warto dowiedzieć się jak mierzyć czas wykonania, aby określić przydatność algorytmu, albo znaleźć jego "wąskie gardło". W tym artykule zostanie przedstawiona klasa Stopwatch, która pozwala na bardzo precyzyjny pomiar czasu.
Klasa Stopwatch znajduje się w przestrzeni System.Diagnostics. Jest to obiekt, który pozwala na uruchomienie pomiaru w dowolnym momencie, jego zatrzymanie oraz reset. Po zatrzymaniu otrzymuje się obiekt, który zawiera informację dotyczące upływu czasu. Można odczytać ile upłynęło np. sekund czy milisekund, albo sformatować wynik na własny sposób.
Przypuśćmy, że mamy funkcję GenerujTabliczke() do generowania tabliczki mnożenia. Zwraca ona dwuwymiarową tablicę, gdzie na pozycji (x, y) znajduje się iloczyn współrzędnych. Oto kod funkcji:
W celu dokonania pomiaru należy utworzyć nowy obiekt Stopwatch, a następnie uruchomić go poleceniem Start(), wywołać funkcję i zatrzymać pomiar czasu metodą Stop(). Kod wyglądałby następująco:
Stoper został zatrzymany. Teraz wystarczy odczytać czas, który został zmierzony. Służy do tego właściwość Elapsed, która jest typu TimeSpan. Taki obiekt można od razu sformatować na tekst, aby odczytać dokładny czas. Przykładowo następująca linijka:
może wypisać na ekran:
Domyślny format wypisywanego czasu to kolejno godziny, minuty, sekundy oraz milisekundy, które upłynęły.
Jak szybko potrafisz czytelniku wciskać przyciski na klawiaturze? Otóż można to sprawdzić pisząc krótki kod w języku C#. Poniższy kod zbiera informację o czasie, który upłynął pomiędzy kolejnymi wciśnięciami na klawiaturze. Reaguje na dowolny przycisk.
Podczas działania pętli zczytywane są kolejne czasy wciśnięcia przycisków. Następnie aktualizowane są wartości minimalne oraz maksymalne czasu, a następnie wypisywane krótkie podsumowanie.