J'essaie de mesurer la durée d'une fonction.Temps de mesure pris par une fonction: clock_gettime
J'ai un petit problème: bien que j'essaie d'être précis, et j'utilise des points flottants, chaque fois que j'imprime mon code en utilisant% lf, j'obtiens une des deux réponses: 1.000 ... ou 0.000 .... me conduit à me demander si mon code est correct:
#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 plupart de ce code n'a pas été faite par moi. Cette page d'exemple avait un code illustrant l'utilisation de clock_gettime:
Quelqu'un peut-il me faire savoir ce qui est incorrect, ou pourquoi je ne reçois des valeurs entières s'il vous plaît?
Merci beaucoup,
Jary
Non, non, non: don » t donner des noms aux nombres. Utilisez la fonction qu'ils servent à la place: '#define CLOCK_PRECISION 1000000000L/* un milliard * /' – pmg
@pmg: Tangente de pédanterie: Je dirais qu'un nom tel que 'CLOCK_PRECISION' ne serait nécessaire que si les unités n'étaient pas claires à partir du Nom de variable. Dans le cas ci-dessus, il est clair d'après le nom 'tv_nsec' que nous sommes en nanosecondes. Donc 'NANOSECONDS_PER_SECOND' pourrait être approprié, mais ce n'est vraiment pas très différent de 'BILLION'. –