Я пытаюсь измерить, сколько времени займет функция.Время измерения, выполняемое функцией: clock_gettime
У меня есть небольшая проблема: хотя я стараюсь быть точным и использовать плавающие точки, каждый раз, когда я печатаю свой код, используя% lf, я получаю один из двух ответов: 1.000 ... или 0.000 .... Это приводит меня к удивлению, соответствует ли мой код:
#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);
Большая часть этого кода не была выполнена мной. На этой странице примера был код, иллюстрирующий использование clock_gettime: http://www.users.pjwstk.edu.pl/~jms/qnx/help/watcom/clibref/qnx/clock_gettime.html
Может ли кто-нибудь, пожалуйста, сообщить мне, что является неправильным, или почему я получаю только целые значения?
Большое спасибо,
Jary
Нет, нет, нет: Дон» t присваивать имена цифрам. Вместо этого используйте функцию, которую они обслуживают: '#define CLOCK_PRECISION 1000000000L/* один миллиард * /' – pmg
@pmg: тангенс педантизма: я бы сказал, что имя, такое как 'CLOCK_PRECISION', было бы необходимо, только если единицы не были ясны из имя переменной. В приведенном выше примере из названия «tv_nsec» ясно, что мы находимся в наносекундах. Поэтому 'NANOSECONDS_PER_SECOND' может быть уместным, но это действительно не так уж и отличается от простоты' BILLION'. –