#c #time
#c #время
Вопрос:
Я хочу вычислить и распечатать time
данные, полученные моей программой на C, для выполнения с использованием ftime()
специально..
Я вижу справочную страницу ftime()
, но я не понимаю, как ее использовать!
Комментарии:
1.
ftime()
устарел — зачем его использовать?how to use it!
С чем конкретно у вас возникли проблемы? Знаете ли вы, как вызвать функцию на C?the time taken
Вас интересует реальное время, измеряемое любыми часами, которые висят на стене, или вас интересует время, в течение которого процессор вашего компьютера был отдан вашей программе?
Ответ №1:
Как правильно упомянул @KamilCuk, функция ftime() устарела и должна быть заменена clock_gettime(), см. справочную страницу.
Этот и другие примеры объясняются здесь
#include <stdio.h>
#include <time.h> // for clock_t, clock()
#include <unistd.h> // for sleep()
#define BILLION 1000000000.0
// main function to find the execution time of a C program
int main()
{
struct timespec start, end;
clock_gettime(CLOCK_REALTIME, amp;start);
// do some stuff here
sleep(3);
clock_gettime(CLOCK_REALTIME, amp;end);
// time_spent = end - start
double time_spent = (end.tv_sec - start.tv_sec)
(end.tv_nsec - start.tv_nsec) / BILLION;
printf("Time elpased is %f seconds", time_spent);
return 0;
}
Ответ №2:
- Если вы работаете в Linux, просто используйте команду ‘time’ для измерения времени выполнения программы:
time ./my_programm
- Вот некоторый код с clock_gettime()
#include <stdio.h> //For printf
#include <time.h> //For clock_gettime
int main (void)
{
//Structs for saving timestamps
struct timespec mt1, mt2;
//Variable for time delta calculating
long int tt;
//Get current time
clock_gettime (CLOCK_REALTIME, amp;mt1);
/* do some stuff here */
//Get current time again
clock_gettime (CLOCK_REALTIME, amp;mt2);
//Calculate the delta between two timestamps
tt=1000000000*(mt2.tv_sec - mt1.tv_sec) (mt2.tv_nsec - mt1.tv_nsec);
//Print the delta
printf ("Time spent: %ld nsec / %ld msn", tt, tt/1000000);
return 0;
}