BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)可以返回硬件支持的高精度计数器的频率。先调用QueryPerformanceFrequency()函数获得机器内部计时器的时钟频率。接着在需要严格计时的事件发生前和发生之后分别调用QueryPerformanceCounter(),利用两次获得的计数之差和时钟陵旁频率,就可以计算出事件经历的精确时间。
#include "stdafx.h"#include <windows.h>
#include <time.h>
#include "process.h"
#define random(x) (rand()%x)
int _tmain(int argc, _TCHAR* argv[])
{
含汪坦 LARGE_INTEGER fre = { 0 } //储存本机CPU时钟频率
LARGE_INTEGER startCount = { 0 }
LARGE_INTEGER endCount = { 0 }
QueryPerformanceFrequency(&fre)//获取本机cpu频率
//开始计时
QueryPerformanceCounter(&startCount)
//运算
for (int i = 0 i < 10000000 i++)
{
float fTem1 = random(100)*random(1000)*random(10000)*random(100000)
}
//结束计时
QueryPerformanceCounter(&endCount)
//计算时间差
谈桐double dTimeTake = ((double)endCount.QuadPart - (double)startCount.QuadPart) / (double)fre.QuadPart
printf("用时%f\n", dTimeTake)
system("pause")
return 0
}
主要就下面这几个函数,会用即可。/* #include <time.h>
库函镇桐如数
1char *asctime(const struct tm *timeptr)
返回一个指向字符串的指针,它代表了结构 timeptr 的日期和时间。
2clock_t clock(void)
返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。
3char *ctime(const time_t *timer)
返回一个表示当地时间的字符串,当地时间是基于参数 timer。
4double difftime(time_t time1, time_t time2)
返回 time1 和 time2 之间相差的秒数 (time1-time2)。
5struct tm *gmtime(const time_t *timer)
timer 的值被分解为 tm 结构,并用协调世界时(UTC)也被称为格林尼治标准时轮侍间(GMT)表示。
6struct tm *localtime(const time_t *timer)
timer 的值被分解为 tm 结构,并用御启本地时区表示。
7time_t mktime(struct tm *timeptr)
把 timeptr 所指向的结构转换为一个依据本地时区的 time_t 值。
8size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)
根据 format 中定义的格式化规则,格式化结构 timeptr 表示的时间,并把它存储在 str 中。
9time_t time(time_t *timer)
计算当前日历时间,并把它编码成 time_t 格式。
*/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)