Czy ktoś wie, czy klasa HiPerfTimer lub StopWatch jest lepsza do testowania porównawczego i dlaczego?Timer o wysokiej wydajności kontra StopWatch
Odpowiedz
Stopwatch opiera się na Wysoka rozdzielczość czasomierza (jeśli są dostępne), można sprawdzić, które z IsHighResolution
StopWatch- działa również w systemach, które nie obsługują licznik wydajności wysokiej rozdzielczości i nie trzeba dowolny zewnętrzne biblioteki do korzystania z niego.
Drugi rzuca wyjątek Win32Exception, jeśli nie ma obsługi licznika o wysokiej rozdzielczości.
Są one takie same, jeśli chodzi o synchronizację w wysokiej rozdzielczości.
Zarówno użyć tego:
[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceCounter(out long PerformanceCount);
a to:
[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceFrequency(out long Frequency);
zrobić bazowego taktowania. (Możesz to sprawdzić za pomocą Reflector.NET). Użyłbym StopWatch, ponieważ jest już częścią struktury (nie ma potrzeby łączenia kolejnej biblioteki DLL) i ma lepsze funkcje niż HiPerfTimer.
Tak - jednak StopWatch jest rzeczywiście lepszy, ponieważ ma opcję awaryjną. HiPerfTimer rzuca wyjątek Win32Exception, jeśli licznik wysokiej wydajności nie jest obsługiwany. – RichardOD
Tak, ostatecznie zrezygnowałem z HiPerfTimer. Artykuł na temat CodeProject jest trochę słaby (ale pomysł był dobry). Poleciłem również StopWatch, jest bardziej niezawodny i ma domyślną wartość, gdy QueryPerformanceFrequency zawodzi, co jest powiązane z IsHighResolution wspomnianym przez Shaya. – ParmesanCodice
- 1. Powershell timer/stopwatch accuracy
- 2. Timer o wysokiej rozdzielczości w .NET
- 3. Monitorowanie wydajności: Ganglia kontra grafit
- 4. Zasoby dla komputerów o wysokiej wydajności w C++
- 5. Używanie Guavy do buforowania wątków o wysokiej wydajności
- 6. JRuby/TorqueBox dla aplikacji o wysokiej wydajności/znaczeniu krytycznym
- 7. Wyświetlanie danych w czasie rzeczywistym o wysokiej wydajności
- 8. Wykres słupkowy o wysokiej szerokości stosu o wysokiej szerokości geograficznej
- 9. Jak napisać wysokiej wydajności klient sieciowy
- 10. Czasomierz ObjC/C/C++ o wysokiej rozdzielczości z oddzwonieniem
- 11. Znaczniki czcionek o wysokiej rozdzielczości
- 12. Timer i TimerTask kontra wątek + sen w Javie
- 13. Phonegap kontra rodzimy na androidowym teście wydajności
- 14. Jak wdrożyć widok drzewa o wysokiej wydajności w SQL Server 2005
- 15. Funkcja sumowania/skanowania prefiksu o wysokiej wydajności w CUDA, szukanie ciągu, zmiana biblioteki cuDPP
- 16. Ustawienia połączeń jedis dla wysokiej wydajności i niezawodności
- 17. Dlaczego drift DateTime.Now i StopWatch?
- 18. Wyświetlacze Retina, obrazy tła o wysokiej rozdzielczości
- 19. Rozgrzewanie aplikacji Java o wysokiej przepustowości
- 20. Kontrola wykresu Silverlight o wysokiej gęstości
- 21. Aplikacja Java o wysokiej skalowalności z Hazelcastem
- 22. Zegar o wysokiej rozdzielczości dla iPhone'a?
- 23. Processing.js timer
- 24. ZeroMQ kontra Rozjazdy I/O
- 25. timing wysokiej częstotliwości .NET
- 26. Angular.js kontra Knockout.js kontra Backbone.js
- 27. Zmień timer jądra Linuksa
- 28. Owijanie timera StopWatch przez delegata lub lambda?
- 29. OPROFILE nie może uzyskać danych o wydajności
- 30. .Net Limity czasu: WaitForSingleObject vs Timer
Z roku 2002, kiedy istniał .NET 1.1. +1 – nawfal