- #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.h
- void 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);
- }