Jak mogę sprawdzić, ile czasu potrzebuje mój kod C# do uruchomienia?Jak długo mój kod jest uruchamiany?
Odpowiedz
Sprawdź klasie Stopwatch
:
Stopwatch sw = new Stopwatch();
sw.Start();
// your code here
sw.Stop();
TimeSpan elapsedTime = sw.Elapsed;
Sprawdź klasę Stopwatch.
Klasa Stopwatch
oferuje precyzyjne taktowanie w .NET. Jest zdolny do pomiaru czasu z czułością około 100s nanosekund (ułamków milisekund). Aby uzyskać dokładną rozdzielczość, przeczytaj wartość Stopwatch.Frequency
.
var timer = System.Diagnostics.Stopwatch.StartNew();
// Run code here.
var elapsed = timer.ElapsedMilliseconds.
Należy także pamiętać, aby uruchomić swój kod wielokrotnie (tyle razy, ile jest to możliwe), aby uzyskać lepszy średni czas, jak również w celu zmniejszenia skutków wahań obciążenia procesora.
Jak mówili inni, klasa Stopwatch
jest dobre dla prostej strony rozrządu rzeczy. Pozostałe bity pamiętać jednak:
- Kod może generować obiekty, które będą musiały zostać śmieci zebrane po tym, jak zatrzymał stoper
- Odwrotnie Twój rozrządu może zawierać inne obiekty są zbierane śmieci nawet jeśli oni nie mają nic wspólnego z kodem
- Jeśli zaczniesz taktowanie zanim skończy swój sposób po raz pierwszy, będzie to czas JIT
- Zażycie bardzo krótki czas, który prowadzi do bardzo nieprzewidywalne wyniki - dla benchmarkingu Zwykle wolę uruchamiać kod przez wiele sekund, na konto dla aplikacji są przerwane przez inne procesy itp
Jeśli jesteś zainteresowany benchmarkingu, mam projekt MiniBench które muszę obejść do pracy ponownie w pewnym momencie - to nie całkiem gdzie chcę go w końcu, ale to jest początek. Mówię więcej o tym, co chcę osiągnąć dzięki temu w this blog post.
Zalecam użycie narzędzia do profilowania, takiego jak ANTS, aby przetestować prędkość aplikacji i znaleźć wolny kod. Umożliwi to wykonanie testu czasu wykonywania wiersza po wierszu.
Jeśli chcesz, po prostu umieść wokół niego pętlę N-iteracji i użyj StopWatch (lub tylko zegarka na rękę) i podziel przez N. Na przykład, jeśli chcesz mikrosekund, niech N = 1000000. Jeśli się martwisz o nadmiarowej pętli, po prostu rozwiń ją dziesięciokrotnie.
- 1. Jak ustalić, czy mój proces jest uruchamiany interaktywnie?
- 2. Czy mój kod jest bezpieczny?
- 3. jak bezpieczny jest mój kod w phonegapie
- 4. Jak sprawdzić, czy kod jest uruchamiany z testu nosa?
- 5. Skąd mogę wiedzieć, który Host środowiska wykonawczego jest aktualnie uruchamiany przez mój kod?
- 6. Jak długo printf długo
- 7. Dlaczego mój klejnot ładuje się tak długo?
- 8. Wykrywanie, kiedy kod jest uruchamiany w Travis CI
- 9. Jaki wyjątek powinienem wyrzucić, gdy uruchamiany jest kod, który nie powinien być uruchamiany?
- 10. Dlaczego wyświetlany jest mój kod źródłowy PHP?
- 11. Gdzie jest mój niestandardowy kod aplikacji Django?
- 12. Wykrywanie, czy kod jest uruchamiany jako rozszerzenie Chrome
- 13. Czy Selen jest wolny, czy mój kod jest nieprawidłowy?
- 14. QPushButton() powinien reagować tak długo, jak długo jest wciśnięty
- 15. Jak długo jest zbyt długo na pakiet testowy?
- 16. Jak mogę poprawić mój kod AS3/Air?
- 17. Jak skonstruować mój kod javascript/jquery?
- 18. Dlaczego mój arkusz nie jest dołączony do okna, dla którego jest uruchamiany?
- 19. Na stałe włącz mój kod
- 20. jak uprościć mój kod za pomocą jquery?
- 21. Jak chronić mój kod źródłowy po wdrożeniu?
- 22. Dlaczego Netbeans nadpisuje mój kod?
- 23. C++ podwójnie długo długo
- 24. CNContactStoreDidChangeNotification jest uruchamiany wiele razy
- 25. Dlaczego mój .setfocus jest ignorowany?
- 26. Używam C++ 14 lub jest mój kod, używając structs, invalid?
- 27. Dlaczego mój kod C++ jest o wiele wolniejszy od R?
- 28. Uprość mój kod jQuery, który rośnie ogromnie i jest niepotrzebny
- 29. Jak sprawdzić, czy kod jest uruchamiany lokalnie z Visual Studio/Cassini
- 30. Sprawdzanie Jeśli proces jest uruchamiany co minutę
Osobiste podziękowania dla MiniBencha, Jona - stał się dla mnie nieocenionym narzędziem. –
@C Rogers: Prawdopodobnie użyłeś tego więcej niż ja! Naprawdę wrócę do tego jakiś czas ... pisanie raczej przeszło na chwilę :( –