Лучше всего синхронизируя метод в C?

79
задан Mark Harrison 10 May 2016 в 04:38
поделиться

4 ответа

Я думаю, что это должно работать:

#include <time.h>

clock_t start = clock(), diff;
ProcessIntenseFunction();
diff = clock() - start;

int msec = diff * 1000 / CLOCKS_PER_SEC;
printf("Time taken %d seconds %d milliseconds", msec/1000, msec%1000);
135
ответ дан Sophie Alpert 24 November 2019 в 10:12
поделиться

gettimeofday (), вероятно, сделает то, что Вы хотите.

, Если Вы находитесь на аппаратных средствах Intel, вот то, как считать ЦП счетчик команд в реальном времени. Это скажет Вам количество циклов ЦП, выполняемых, так как процессор был загружен. Это - вероятно, самый низкий служебный счетчик с самыми прекрасными зернами, который можно получить для измерения производительности.

Примечание, что это - количество циклов ЦП. На Linux можно получить скорость ЦП от/proc/cpuinfo и разделиться для получения числа секунд. Преобразование этого к двойному довольно удобно.

, Когда я выполняю это на своем поле, я добираюсь

11867927879484732
11867927879692217
it took this long to call printf: 207485

, Вот Руководство разработчика Intel, которое дает тонны детали.

#include <stdio.h>
#include <stdint.h>

inline uint64_t rdtsc() {
    uint32_t lo, hi;
    __asm__ __volatile__ (
      "xorl %%eax, %%eax\n"
      "cpuid\n"
      "rdtsc\n"
      : "=a" (lo), "=d" (hi)
      :
      : "%ebx", "%ecx");
    return (uint64_t)hi << 32 | lo;
}

main()
{
    unsigned long long x;
    unsigned long long y;
    x = rdtsc();
    printf("%lld\n",x);
    y = rdtsc();
    printf("%lld\n",y);
    printf("it took this long to call printf: %lld\n",y-x);
}
21
ответ дан Mark Harrison 24 November 2019 в 10:12
поделиться

gettimeofday возвратит время с точностью до микросекунд в разрешении системных часов. Вы могли бы также хотеть проверить Таймеры С высоким разрешением проект на SourceForge.

4
ответ дан tvanfosson 24 November 2019 в 10:12
поделиться

Я использую SDL_GetTicks от библиотека SDL .

3
ответ дан driAn 24 November 2019 в 10:12
поделиться
Другие вопросы по тегам:

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