C Time.h функционирует с ошибками в Precise 12.04

Я использую Ubuntu 12.04 и использую компилятор gcc для компиляции моих программ на C / C ++. Я хочу сравнить функцию. AFAIK, есть две стандартные функции для расчета времени в системах POSIX, и обе они показывают ошибочные результаты в Ubuntu:

gettimeofday clock_gettime

Вот мой код:

int main()
{
    float msec=0;
    //struct timespec start,end;
    struct timeval start,end;

    //clock_gettime(CLOCK_MONOTONIC_RAW,&start);
    //clock_gettime(CLOCK_REALTIME,&start);
    gettimeofday(&start,NULL);

        get_height(); //function i want to benchmark

/*  usleep(1000000);*/

    //clock_gettime(CLOCK_REALTIME,&end);
    gettimeofday(&end,NULL);

    //msec = (end.tv_sec-start.tv_sec)*1000 + (end.tv_nsec-start.tv_nsec)/(float)1000000;
    msec = (end.tv_sec-start.tv_sec)*1000 + (end.tv_usec-start.tv_usec)/(float)1000;
    printf("%0.2f ms.\n",msec); //41-44

}

Проблема в том, что отображаемая миллисекунда показывает ошибочные / разные результаты при каждом запуске программы. Некоторые показания образца: 38,16 мс. 42,72 мс 35,70 мс 45,13 мс.

Однако, когда я тестирую с помощью функции usleep (), результат показывает 1000 мс. должным образом. Любое представление о том, какую библиотеку / функцию я должен использовать для точного определения времени моих функций?

РЕДАКТИРОВАТЬ: Это поможет уточнить, что указанные функции clock_gettime неточны только в Ubuntu 12.04. Я тестировал на других машинах, где он показал точные результаты. Даже в окнах эквивалентные функции query_performance_counter () показали точные результаты.

1
задан 6 April 2013 в 18:25

0 ответов

Другие вопросы по тегам:

Похожие вопросы: