airobotnews 发表于 2018-12-25 21:00:43

c语言程序运行时间 time.h

本帖最后由 airobotnews 于 2018-12-25 21:03 编辑

在很多情况下,为了评判某个算法,函数的优劣,特别是比较同一个功能的两个函数的效率高低时,我们经常通过计算耗费时间作为判断标准。C语言中有两个相关的函数用来计算时间差,分别是:
time_t time( time_t *t)   与 clock_t clock(void)
头文件: time.h
计算的时间单位分别为: s   , ms
time_t 和 clock_t 是函数库time.h 中定义的用来保存时间的数据结构。
返回值:1、time: 返回从公元1970年1月1号的UTC时间从0时0分0秒算起到现在所经过的秒数。如果参数 t 非空指针的话,返回的时间会保存在 t 所指向的内存。
2、clock:返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数。   1单元 = 1 ms。
所以我们可以根据具体情况需求,判断采用哪一个函数。

具体用法如下例子:#include <time.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
        time_t c_start, t_start, c_end, t_end;

        c_start = clock();    //!< 单位为ms
        t_start = time(NULL);//!< 单位为s
        system("pause");
        c_end   = clock();
        t_end        = time(NULL);

        //!<difftime(time_t, time_t)返回两个time_t变量间的时间间隔,即时间差
        printf("The pause used %f ms by clock()\n",difftime(c_end,c_start));
        printf("The pause used %f s by time()\n",difftime(t_end,t_start));
        system("pause");

        return 0;
}例子2
#include <stdio.h>
#include <time.h>
typedef unsigned char LBYTE;
typedef unsigned short LWORD;
typedef unsigned int LDWORD;
typedef int LLONG;
int main ()
{
          time_t c_start, t_start, c_end, t_end;
          c_start = clock();//开时间 ms
         t_start = time(NULL);//!< 单位为s

    int i;
       for(i;i<100;i++);
      
             c_end   = clock();
      t_end      = time(NULL);
            printf("The pause used %f ms by clock()\n",difftime(c_end,c_start));
      printf("The pause used %f s by time()\n",difftime(t_end,t_start));

    return 0;
}




页: [1]
查看完整版本: c语言程序运行时间 time.h