C 语言如何实现微秒级计算程序运行时间
C 语言中用 clock() 函数计算程序运行时间只能达到毫秒级,要想使用微秒级别的计算,只能求助于CPU时钟频率.
先使用 QueryPerformanceFrequency() 函数获取本机 CPU 的频率,QueryPerformanceFrequency() 函数包含在 windows.h 库中
再分别用 QueryPerformanceCounter() 函数在程序开始和结束时计数,相当于一个时间戳
再通过 double dTimeTake = ((double)endCount.QuadPart - (double)startCount.QuadPart) / (double)fre.QuadPart; 计算时间差.输出.
计算程序运行时间
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include <stdio.h>
#include <windows.h>
int main(void)
{
LARGE_INTEGER fre = {0};
LARGE_INTEGER startCount = {0};
LARGE_INTEGER endCount = {0};
QueryPerformanceFrequency(&fre);
QueryPerformanceCounter(&startCount);
/* Sleep(2000); /\* 单位为毫秒 *\/ */
printf("Hello.\n");
QueryPerformanceCounter(&endCount);
double dTimeTake = ((double)endCount.QuadPart - (double)startCount.QuadPart) / (double)fre.QuadPart;
printf("用时 %f 秒\n", dTimeTake); /* 单位为秒 */
printf("用时 %f 微秒\n", (dTimeTake * 1000000)); /* 单位为微秒 */
return 0;
}
|