Форум — Development Время 0 0 Ребята, а вот скажите пожалуста как можно измерить время выполнения функции на с, да и вообще. Что бы не просто в секундах,а в милисекундах. Знаю про time.h/ Ссылка
Ответ на: комментарий от marsijanin 02.11.07 01:24:48 MSK s/get_timeofday/gettimeofday/ marsijanin ★★ (02.11.07 01:26:10 MSK) Показать ответ Ссылка
Ответ на: комментарий от marsijanin 02.11.07 01:26:10 MSK Это вот что ты последний раз написал ? anonymous (02.11.07 01:29:22 MSK) Показать ответы Ссылка
Ответ на: комментарий от anonymous 02.11.07 01:29:22 MSK gettimeofday - функция такая, из sys/time.h - int gettimeofday(struct timeval *tv, struct timezone *tz) A в timeval два поля, и которое tv_usec - в микросекундах, как можно догадаться из названия. marsijanin ★★ (02.11.07 01:33:36 MSK) Ссылка
Ответ на: комментарий от anonymous 02.11.07 01:29:22 MSK > Это вот что ты последний раз написал ? http://en.wikipedia.org/wiki/128-bit dilmah ★★★★★ (02.11.07 01:38:30 MSK) Показать ответ Ссылка
Ответ на: комментарий от dilmah 02.11.07 01:38:30 MSK А как выводить time_t ? anonymous (02.11.07 01:50:23 MSK) Показать ответ Ссылка
Ответ на: комментарий от anonymous 02.11.07 01:50:23 MSK Аха, ld походу. Но чё-то сегментиться... anonymous (02.11.07 01:52:35 MSK) Показать ответ Ссылка
Ответ на: комментарий от anonymous 02.11.07 01:52:35 MSK Амперсанд ни где не забыли? А вообще трутЪ джедаи устраивают запись в какой нить порт, подрубают к нему осциллограф и смотрят время по нему. marsijanin ★★ (02.11.07 02:24:26 MSK) Ссылка
Еще так мона: #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 (02.11.07 02:25:12 MSK) Показать ответ Ссылка
Ответ на: комментарий от Deleted 02.11.07 02:25:12 MSK Правда значения точнее сотой доли секунды у мну так не получаются. Deleted (02.11.07 02:30:43 MSK) Ссылка
#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 ★★★★★ (02.11.07 16:31:47 MSK) Ссылка
А как же 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 (03.11.07 00:38:51 MSK) Ссылка