Ich habe eine experimentelle Bibliothek, deren Leistung ich versuche zu messen. Um dies zu tun, ich habe folgendes geschrieben:Warum sind gettimeofday() Intervalle gelegentlich negativ?
struct timeval begin;
gettimeofday(&begin, NULL);
{
// Experiment!
}
struct timeval end;
gettimeofday(&end, NULL);
// Print the time it took!
std::cout << "Time: " << 100000 * (end.tv_sec - begin.tv_sec) + (end.tv_usec - begin.tv_usec) << std::endl;
Gelegentlich meine Ergebnisse sind negative Timings, von denen einige unsinnig. Zum Beispiel:
Time: 226762
Time: 220222
Time: 210883
Time: -688976
Was ist los?
Sie erhalten negative, da timeval eine Mehrkomponentenstruktur ist. kurz gesagt bestehend aus Sekunden und Sekunden. wenn du naiv die üblichen komponenten im 2. tv durch den 1. tv vergleichst, bekommst du negative. Betrachten wir zum Beispiel tv1 als 1sec 3usec aus der Epoche und tv2 als 4sec und 1usec aus der Epoche.Wie Sie sehen können, erhalten Sie jetzt einen negativen Wert im Unterschied zwischen den Usec-Komponenten. –
Sie haben 4 Antworten auf diese Frage erhalten, keine von ihnen kam einer korrekten Antwort nahe, aber Sie haben immer noch die irrelevantste als endgültige Antwort gewählt. –
Interessante Ergänzung, aber nur relevant bei Verwendung nur einer der Komponenten, wie ich es tat (nur mit den tv_usec-Komponenten, nicht die tv_sec-Komponenten). – egpbos