LINUX.ORG.RU

Время


0

0

Ребята, а вот скажите пожалуста как можно измерить время выполнения функции на с, да и вообще. Что бы не просто в секундах,а в милисекундах. Знаю про time.h/

anonymous
Ответ на: комментарий от anonymous

gettimeofday - функция такая, из sys/time.h -

int gettimeofday(struct timeval *tv, struct timezone *tz)

A в timeval два поля, и которое tv_usec - в микросекундах, как можно догадаться из названия.

marsijanin ★★
()
Ответ на: комментарий от anonymous

Амперсанд ни где не забыли? А вообще трутЪ джедаи устраивают запись в какой нить порт, подрубают к нему осциллограф и смотрят время по нему.

marsijanin ★★
()

Еще так мона:

#include <stdio.h>
#include <time.h>
#define CLOCKS_PER_MS (CLOCKS_PER_SEC/1000)

int main(int argc, char **argv)
{
        clock_t entryClock = clock()/CLOCKS_PER_MS;
        long i;
        for(i=0; i<100000000; i++) {
                float a = (i*2351513513.4356456123/23123.322)+i*666;
                float b = (i*2351513513.4356456123/23123.322)+i*666;
        }
        clock_t exitClock = clock()/CLOCKS_PER_MS;
        printf("elapsed: %d ms\n", exitClock-entryClock);
}

Deleted
()
Ответ на: комментарий от Deleted

Правда значения точнее сотой доли секунды у мну так не получаются.

Deleted
()

#include <sys/time.h>

#define elap(t0,t1) \
	((1000*t1.tv_sec+0.001*t1.tv_usec) -       (1000*t0.tv_sec+0.001*t0.tv_usec))

[time code]

struct timeval	tv0,tv1;
gettimeofday(&tv0,0);

...

gettimeofday(&tv1,0);
double timeOut =  elap(tv0,tv1);
printf("time=%6.2f ms", timeOut);

vtVitus ★★★★★
()

А как же clock_gettime?

/* ---------------------------- */

/* текущее время в наносекундах */
static inline unsigned long long
current_time(void)
{
  struct timespec now;

  clock_gettime(CLOCK_REALTIME, &now);

  return now.tv_nsec + now.tv_sec * 1000000000ULL;
}

int
main(void)
{
  const unsigned long long    begin_time = current_time();

  do_something_expensive();

  const unsigned long long    end_time = current_time();

  printf("result: %llu nanoseconds\n", end_time - begin_time);

  return 0;
}

/* ---------------------------- */

binnehex
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.