Вычислить время выполнения программы на C

#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:

  1. Если вы работаете в Linux, просто используйте команду ‘time’ для измерения времени выполнения программы:
 time ./my_programm
 
  1. Вот некоторый код с 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;
}