Estoy tratando de medir cuánto tiempo tarda una función.Tiempo de medición tomado por una función: clock_gettime
Tengo un pequeño problema: aunque trato de ser preciso y uso puntos flotantes, cada vez que imprimo mi código usando% lf obtengo una de dos respuestas: 1.000 ... o 0.000 .... Esto me lleva a preguntarse si el código es correcto:
#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 mayor parte de este código no se ha hecho por mí. Esta página de ejemplo tenía un código que ilustra el uso de clock_gettime: http://www.users.pjwstk.edu.pl/~jms/qnx/help/watcom/clibref/qnx/clock_gettime.html
¿Podría alguien decirme por favor qué es incorrecto, o por qué solo estoy obteniendo valores enteros, por favor?
Muchas gracias,
Jary
No, no, no: Don' t dar nombres a los números. Use la función que sirven en su lugar: '#define CLOCK_PRECISION 1000000000L/* un billón * /' – pmg
@pmg: Pedantry tangent: Yo diría que un nombre como 'CLOCK_PRECISION' solo sería necesario si las unidades no fueran claras desde el nombre de la variable. En el caso anterior, está claro por el nombre 'tv_nsec' que estamos en nanosegundos. Entonces 'NANOSECONDS_PER_SECOND' podría ser apropiado, pero eso no es muy diferente a simplemente' BILLION'. –