C++ Zeitmessung relativ?

Die high_esolution_clock ist hochauflösend, aber nicht sehr genau, ganz besonders wenn sich der Takt der Kerne auch noch ändert, der Tag hat da nicht unbedingt genau 24 Stunden. Die ist auch zwischen den Kernen einer CPU nicht genau synchronisiert, man sollte die Thread daher für ein genaues Ergebnis fest an einen Kern binden, sonst kann es bei ganz kurzen Zeiten schlimmstenfalls sogar negative Ergebnisse geben!

Eigene Datenstrukturen zu verwenden kann sich bei der Performance durchaus lohnen, man sollte aber auch aufpassen ob diese dann auch zuverlässig und z.B. auch multithreading tauglich sind! Außerdem haben unterschiedliche Datenstrukturen durchaus unterschiedliche Performance je nachdem wie viele Daten darin gespeichert werden, bei den Tests sollte man dies berücksichtigen, sonst kann man böse daneben liegen.
 
@Holt: also, da die Implementierung von std::chrono::high_esolution_clock von Compiler zu Compiler, OS zu OS und Prozessor zu Prozessor variiert wäre ich mit solchen allgemeinen Aussagen zur Genauigkeit vorsichtig.
Was die Datenstrukturen angeht: Die Klassen in der Standardbibliothek sind halt so designed, dass die in möglichst vielen Situationen und möglichst vielen workloads effizient und sicher nutzbar sind. Wenn man eine Datenstruktur für einen bestimmten Einsatzzweck optimiert kann man natürlich fast immer mehr Performance raus holen.

@T.C.: Wenn du ernsthafte benchmarks betreiben willst würde ich mich weniger darum kümmern, welche clock da jetzt am besten ist, sondern gleich eine entsprechende Bibliothek zu nutzen (z.B. Google Benchmark: https://github.com/google/benchmark)
 
Zurück
Oben