#include <windows.h>
int main()
{
SYSTEMTIME systime //保存时间的结构体
GetLocalTime(&systime) //本地时间
printf("今天是:")
printf("%d年%d月%d日\n",systime.wYear,systime.wMonth,systime.wDay)
printf("现在时间是:")
printf("%d:%d:%d:%d\n",systime.wHour,systime.wMinute,systime.wSecond,systime.wMilliseconds)
printf("星期:%d\n\n",systime.wDayOfWeek)
GetSystemTime(&systime) //系统时间
printf("现在时间是:")
printf("%d:%d:%d:%d\n",systime.wHour,systime.wMinute,systime.wSecond,systime.wMilliseconds)
return 0
}//一个Windows环境下取得时间的例子!
基本的原理是在执行待测函数之前读取CPU的计数器,执行待测函数之后,再读取一遍,两个计数器之差,再除以CPU主频,就是待测函数执行所用时间。测试精度与CPU主频有关,一般可以精确到微秒量级。读取CPU计数器的函数:QueryPerformanceCounter()
获取CPU计数器的函数:QueryPerformanceFrequency()
具体 *** 作示范:
首先定义一下所需变量:
LARGE_INTEGER litmp
LONGLONG QPart1,QPart2
double dfMinus, dfFreq, dfTim
在待测函数之前加入:
QueryPerformanceFrequency(&litmp)
dfFreq = (double)litmp.QuadPart// 获得计数器的时钟频率
QueryPerformanceCounter(&litmp)
QPart1 = litmp.QuadPart// 获得初始值
在待测函数加入:
QueryPerformanceCounter(&litmp)
QPart2 = litmp.QuadPart//获得中止值
dfMinus = (double)(QPart2-QPart1)
dfTim = (dfMinus*1000) / dfFreq// 获得对应的时间值,单位为为毫秒
dfTim就是待测函数执行所需的时间了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)