C 库 - difftime() 函数



C 库的 difftime() 函数用于返回两个时间之间的差值。这两个时间都以日历时间指定,表示自纪元(1970年1月1日00:00:00,协调世界时 (UTC))以来经过的时间。

语法

以下是 C 库 difftime() 函数的语法:

double difftime(time_t time1, time_t time2)

参数

此函数接受以下参数:<>

  • time1 − 这是结束时间的 time_t 对象。

  • time2 − 这是开始时间的 time_t 对象。

返回值

此函数返回两个时间之差 (time1 - time2) 作为双精度值。

示例 1

以下是一个基本的 C 库程序,演示了 difftime() 函数。

#include <stdio.h>
#include <time.h>

int main () {
   time_t start_t, end_t;
   double diff_t;

   printf("Starting of the program...\n");
   time(&start_t);

   printf("Sleeping for 5 seconds...\n");
   sleep(5);

   time(&end_t);
   diff_t = difftime(end_t, start_t);

   printf("Execution time = %f\n", diff_t);
   printf("Exiting of the program...\n");

   return(0);
}

输出

以上代码产生以下结果:

Starting of the program...
Sleeping for 5 seconds...
Execution time = 5.000000
Exiting of the program...

示例 2

在此程序中,我们测量睡眠间隔期间经过的时间,并计算两个时间点 (t1 和 t2) 之间的差值。

#include <stdio.h>
#include <time.h> 
#include <unistd.h> 

int main() 
{ 
   int sc; // second 
   time_t t1, t2; 

   // Current time 
   time(&t1); 
   for (sc = 1; sc <= 4; sc++) 
	sleep(1); 

   // time after sleep in loop. 
   time(&t2); 
   printf("Difference is %.2f seconds", 
   difftime(t2, t1)); 

   return 0; 
}

输出

以上代码产生以下结果:

Difference is 4.00 seconds

示例 3

以下示例使用嵌套的 for 循环迭代,使用 difftime() 从结束时间减去开始时间。因此,结果打印为循环执行所需的总时间。

#include <stdio.h>
#include <time.h>

int main()
{
   time_t begin, end;
   long long prod;

   time(&begin);
   for(int i=0; i<10000; i++)
   {
      for(int j=0; j<100000; j++)
      {
         prod = i*j;
      }
   }
   time(&end);
   printf("Time required = %f seconds", difftime(end, begin));
   return 0;
}

输出

执行以上代码后,我们得到以下结果:

Time required = 2.000000 seconds
广告