多语言展示
当前在线:801今日阅读:23今日分享:25

怎样在程序中精确计时

在编写一些游戏程序时,常常需要高精度计时,普通的计时分辨率已经满足不了要求。那么,这该如何是好呢?下面,我们就以用 VS2013 中编写一个高精度计时程序为例,来教大家具体的方法。
工具/原料

VS2013

一、函数简介
1

要进行高精度计时,需要用到两个函数:QueryPerformanceFrequencyQueryPerformanceCounter要使用这两个函数,需要包含头文件Winbase.h ( 包含于 Windows.h 中)。

3

QueryPerformanceCounter 函数的说明如图所示。

4

这两个函数均需要用到一个 LARGE_INTEGER 结构,该结构的介绍如图所示。

二、用法

利用以上两个函数获得精确计时的方法如图所示。

三、示例
1

现在,我们利用以上函数对系统中的 Sleep 函数的精确度作一下考量,测试一下 Sleep(1000) 的误差范围大概是多大。

2

在程序中,定义三个 LARGE_INTEGER 结构变量,分别用它们来获取时钟分辨率、开始和结束计时,最后在屏幕上输出结果。

3

以下是运行结果截图。可以看出,Sleep函数的精确度相对而言还是比较差的。

注意事项

要使用QueryPerformanceFrequency、QueryPerformanceCounter函数,需要包含相应头文件。

推荐信息