c语言中测试代码的运行时间

来源:互联网 发布:php7 比 java 更难了 编辑:程序博客网 时间:2024/06/06 20:05
#include <stdio.h>#include <time.h>#include <windows.h>void main(){   clock_t start , finish;   start = clock();   Sleep(23);   finish = clock();         double elapsed_time;   elapsed_time = (finish - start) / (double)CLOCKS_PER_SEC;   printf("%lf\n",elapsed_time);}


1、使用time.h中clock函数

#include "stdio.h"#include "time.h"int main(int argc, char ** argv){    time_t time1, time2;    time1 = time((time_t *)NULL);    //your code    time2 = time((time_t *)NULL);    printf("%f\n", difftime(time2, time2));    return 0;}

2、使用time和difftime函数

以上这两种方式,处理测试代码时,结果都是0.000000,不是我想要的结果

用LARGE_INTEGER查看系统运行时间,运行结果可以达到毫秒级

3、使用LARGE_INTEGER

#include <stdio.h>#include <stdlib.h>#include <windows.h>   // 注意,该功能需要调用windows.hvoid main(){int i;long sum=0;double d;LARGE_INTEGER Freg;                LARGE_INTEGER Count1, Count2;QueryPerformanceFrequency(&Freg);  // 调用API函数,这个API函数可是优先级0的函数啊. 得到系统计数器频率        QueryPerformanceCounter(&Count1);  // 获取时间一for(i=1;i<=500;i++)   // 执行程序。sum=sum+i;    QueryPerformanceCounter(&Count2);  // 获取时间二    d = (double)(Count2.QuadPart - Count1.QuadPart) / (double)Freg.QuadPart * 1000.0;    // 得到的d为时间差,单位为毫秒。  printf("The time is %f, and the sum is %d\n",d,sum);}