Ho una libreria sperimentale di cui sto provando a misurare le prestazioni. Per fare questo, ho scritto il seguente:Perché gli intervalli gettimeofday() sono occasionalmente negativi?
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;
Di tanto in tanto, i miei risultati includono tempi negativi, alcune delle quali sono prive di senso. Ad esempio:
Time: 226762
Time: 220222
Time: 210883
Time: -688976
Cosa sta succedendo?
si ottengono i negativi perché il tempo è una struttura a più componenti. in breve composto da secondi e secondi. se si diffamano in modo ingenuo i componenti comuni nella seconda tv dal 1 ° TV, si otterranno dei negativi. per esempio considera tv1 come 1sec 3usec da epoca e tv2 da 4sec e 1usec da epoca.come puoi vedere ora ottieni un valore negativo nella differenza tra i componenti usec. –
Hai 4 risposte a questa domanda, non una di queste è nemmeno arrivata vicino a fornire una risposta corretta, ma hai comunque selezionato la più irrilevante come risposta finale. –
Interessante aggiunta, ma rilevante solo quando si utilizza solo uno dei componenti, come stavo facendo (solo usando i componenti tv_usec, non quelli tv_sec). – egpbos