Ich habe versucht, die Zeit zu messen, die für die Ausführung einer bestimmten Funktion in meinem Code benötigt wird. Am Anfang habe ich die clock()
Funktion wie untenUnterschied in der Zeit gemessen von Uhr und steady_clock
clock_t start = clock();
do_something();
clock_t end = clock();
printf("Time taken: %f ms\n", ((double) end - start)*1000/CLOCKS_PER_SEC);
Später ich über die chrono
Bibliothek in C++11
lese und versuchte, das gleiche mit einem std::chrono::steady_clock
wie unten
using namespace std::chrono;
auto start = steady_clock::now();
do_something();
auto end = steady_clock::now();
printf("Time taken: %lld ms\n", duration_cast<milliseconds>(end - start).count());
Die Zeit vom ersten Code gemessen zu messen Schnipsel (unter Verwendung von clock
) war 89.53 ms
und der durch steady_clock
gemessene Wert war 1140 ms
.
Warum gibt es einen so großen Unterschied in der Zeit gemessen von beiden Uhren?
Wenn möglich, könnten Sie bitte eine [mcve] erstellen? – Rakete1111
@ Rakete1111: Hier ist der [Link] (http://coliru.stacked-crooked.com/a/9f74e57079978629) zu einem kleinen Testfall, wo das Problem reproduzierbar ist. –