Per prima cosa, non sono sicuro di essere nel topic piu' appropriato della domanda... comunque

Ho creato un programma per C++ di cui ne devo misuare il runtime tramite una funzione appositamente creata inserita nel programma stesso. Se lo eseguo piu' volte sullo stesso computer trovo che il runtime e' sempre diverso, seppur di poco, anche se tutte le altre operazioni che deve eseguire tornano sempre lo stesso risultato corretto. Ma su run di una decina di ore mi ritrovo con differenze di runtime anche di 5 minuti. A cosa sono dovute queste fluttazioni di tempo? E' un problema del'algoritmo stesso per misuare il tempo? Errori del computer?

Vi riporto per scrupolo le funzioni che ho inserito per la misura del tempo:

codice:
#include <sys/time.h>

static struct timeval _tstart, _tend;
static struct timezone tz;

void tstart(void) {
   gettimeofday(&_tstart,&tz);
}

void tend(void) {
   gettimeofday(&_tend,&tz);
}

double tval(){
   typedef double s;
   s t1, t2;
   t1 = (s)_tstart.tv_sec + (s)_tstart.tv_usec/(1000*1000);
   t2 = (s)_tend.tv_sec + (s)_tend.tv_usec/(1000*1000);
   return t2 - t1;
}
in pratica chiamo la funzione tstart quando voglio far partire il tempo, chiamo tend quando lo voglio bloccare e con tval mi riporta il tempo.