singlepost

измерение времени работы процедуры в программе на c << На главную или назад  

вобщем поставлена задача измерить время сортировки массива. замерить время начала и конца процедуры результата не принесло( может кто подскажет как можно сделать???

77 ответов в теме “измерение времени работы процедуры в программе на c”

  1. 7
    Сергей Гурин ответил:

    всем огромное спасибо, программа уже работает))))

  2. 6
    Леонид Максимов ответил:

    в винде же есть QueryPerformanceCounter/QueryPerformanceFrequency. как правило дает доли мкс.

  3. 5
    Михаил Малеванный ответил:

    Это и есть тот HPET (High Precision Event Timer), о котором я упоминал.

  4. 4
    Михаил Малеванный ответил:

    Если массив мелкий, то заворачивание его в цикл может привести к тому, что оптимизирующий компилятор внесет существенные искажения в результаты.
    Нужно увеличивать размер массива.

    Вариант: оформить функцию
    inline __int64 rdtsc()
    {
    __int64 res;
    __asm {
    rdtsc
    movdword ptr [res], eax
    movdword ptr [res + 4], edx
    }
    return res;
    }

    Вызывать ее до и после сортировки и сохранять возвращаемое значение в переменных типа __int64.
    Функция возвращает номер такта процессора.

    P.S. "Разрешение" функции GetTickCount() ~ 15 миллисекунд.
    Можно еще использовать HPET, который работает с точностью до долей микросекунды.

  5. 3
    Сергей Гурин ответил:

    Алексей KingOfNothing Руденко
    точности не хватает

    Денис Боенсков
    спасибо, помогло)))

  6. 2
    Денис Боенсков ответил:

    clock() – точность 1/CLK_TCK секунд
    GetTickCount() – количество миллисекунд с запуска windows
    если массив мелкий, то можно сделать несколько циклов для большей точности

  7. 1
    Алексей Руденко ответил:

    а почему замерение начала и конца не принесло результата?

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.