Sto provando a misurare la durata di una funzione.Misurazione del tempo impiegato da una funzione: clock_gettime
Ho un piccolo problema: anche se sto cercando di essere preciso, e uso i punti mobili, ogni volta che stampo il mio codice usando% lf ottengo una delle due risposte: 1.000 ... o 0.000 .... Questo Mi porta a chiedermi se il mio codice è corretto:
#define BILLION 1000000000L;
// Calculate time taken by a request
struct timespec requestStart, requestEnd;
clock_gettime(CLOCK_REALTIME, &requestStart);
function_call();
clock_gettime(CLOCK_REALTIME, &requestEnd);
// Calculate time it took
double accum = (requestEnd.tv_sec - requestStart.tv_sec)
+ (requestEnd.tv_nsec - requestStart.tv_nsec)
/BILLION;
printf("%lf\n", accum);
La maggior parte di questo codice non è stata fatta da me. Questa pagina di esempio conteneva codice che illustrava l'uso di clock_gettime: http://www.users.pjwstk.edu.pl/~jms/qnx/help/watcom/clibref/qnx/clock_gettime.html
Qualcuno potrebbe, per favore, farmi sapere cosa non è corretto, o perché sto ricevendo solo valori interi, per favore?
La ringrazio molto,
Jary
No, no, no: don' t dare nomi ai numeri. Usa la funzione che servono invece: '#define CLOCK_PRECISION 1000000000L/* un miliardo * /' – pmg
@pmg: tangente pedanteria: direi che un nome come "CLOCK_PRECISION" sarebbe necessario solo se le unità non fossero chiare dal nome variabile. Nel caso precedente, è chiaro dal nome 'tv_nsec' che siamo in nanosecondi. Quindi 'NANOSECONDS_PER_SECOND' potrebbe essere appropriato, ma non è molto diverso dal semplice' BILLION'. –