Qualcuno sa se la classe HiPerfTimer o StopWatch è migliore per il benchmarking e perché?Timer ad alte prestazioni vs StopWatch
risposta
Stopwatch si basa sul timer ad alta risoluzione (se disponibile), è possibile verificare che con IsHighResolution
StopWatch- funziona anche su sistemi che non supportano un contatore di prestazioni ad alta risoluzione e non è necessario alcun librerie esterne per usarlo.
L'altro lancia una Win32Exception se non vi è supporto per un contatore ad alta risoluzione.
Sono gli stessi quando si tratta di cronometraggio ad alta risoluzione.
Entrambi utilizzano questo:
[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceCounter(out long PerformanceCount);
e questo:
[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceFrequency(out long Frequency);
per fare la temporizzazione sottostante. (Puoi verificarlo con Reflector.NET). Userò StopWatch perché è già parte del framework (non c'è bisogno di collegare un'altra DLL) e ha caratteristiche migliori di HiPerfTimer.
Sì, tuttavia lo StopWatch è effettivamente superiore perché ha un'opzione di fallback. HiPerfTimer genera una Win32Exception se un contatore ad alte prestazioni non è supportato. – RichardOD
Sì, alla fine ho rinunciato a HiPerfTimer. L'articolo su CodeProject è un po 'inconsistente (ma l'idea era buona). Ho anche consigliato StopWatch, è più robusto e avrà un valore predefinito in caso di errore di QueryPerformanceFrequency, che è collegato alla IsHighResolution menzionata da Shay. – ParmesanCodice
- 1. StopWatch vs Timer - Quando utilizzare
- 2. Serializzazione ad alte prestazioni: Java vs Google Protocol Buffers vs ...?
- 3. Mezzo array ad alte prestazioni
- 4. Messaggistica JMS ad alte prestazioni
- 5. Calcolo ad alte prestazioni Python
- 6. Espressioni regolari Java semplici ad alte prestazioni
- 7. Matrici multidimensionali C++ ad alte prestazioni
- 8. registrazione multithreading per applicazioni ad alte prestazioni
- 9. wpf Grafica ad alte prestazioni 2d
- 10. Prestazioni per Timer vs DispatcherTimer
- 11. libreria matematica ad alte prestazioni per .NET/C# e Java
- 12. Visualizzazione dati in tempo reale ad alte prestazioni
- 13. Buffering ad alte prestazioni per un flusso di randelli
- 14. JRuby/TorqueBox per applicazioni ad alte prestazioni/mission critical
- 15. Analisi RSS/Atom ad alte prestazioni con Ruby on Rails
- 16. Best practice di applicazioni di rete ad alte prestazioni
- 17. Griglia pivot ad alte prestazioni per dati pre-aggregati
- 18. Libri su siti web ad alte prestazioni e scalabilità.
- 19. Grafica ad alte prestazioni utilizzando il livello WPF Visual
- 20. Ricerca stringa di massa ad alte prestazioni in Python
- 21. Generazione dinamica di funzioni ad alte prestazioni in clojure
- 22. Come implementare la visualizzazione ad albero ad alte prestazioni in SQL Server 2005
- 23. DB ad alte prestazioni per lettura veloce e scrittura veloce. Nessun aggiornamento o eliminazione
- 24. Timer in prestazioni Ruby
- 25. . Timeout Net: WaitForSingleObject vs Timer
- 26. Timer vs setTimeout
- 27. Come configurare BLAS/LAPACK ad alte prestazioni per Breeze su Amazon EMR, EC2
- 28. C/C++ rispetto a Java/C# in applicazioni ad alte prestazioni
- 29. Utilizzo di Guava per la memorizzazione nella cache sicura da threading ad alte prestazioni
- 30. Progettazione di socket/thread del server ad alte prestazioni più efficiente
La data del 2002, quando .NET 1.1 era in circolazione. +1 – nawfal