[win32] GetTickCount和TimeGetTime
2016-07-05 15:22
621 查看
GetTickCount精度是15ms左右,TimeGetTime的精度是1ms。游戏里面一般用的是GetTickCount。
Sleep不是一个很稳定的过程,所以当SleepTime比较小的时候,比如1-10ms的时候,两次运行,结果会有比较大的差异。Sleep在100ms以上的时候,基本上两个方法得到时间基本上是相近的。
Sleep不是一个很稳定的过程,所以当SleepTime比较小的时候,比如1-10ms的时候,两次运行,结果会有比较大的差异。Sleep在100ms以上的时候,基本上两个方法得到时间基本上是相近的。
#include <iostream> #include <d3dx9.h> using namespace std; void TestTime(int nLoopNum, int nSleepTime); int main(int argc, char* argv[]) { const int nLoopNum = 8; // for(int nSleepTime = 1; nSleepTime < 10; nSleepTime+=1) // TestTime(nLoopNum, nSleepTime); for(int nSleepTime = 1; nSleepTime <= 251; nSleepTime+=50) TestTime(nLoopNum, nSleepTime); return 0; } void TestTime(const int nLoopNum, const int nSleepTime) { cout << "---------------------------------------------------------" << endl; cout << "loop num = " << nLoopNum << ", sleep time = " << nSleepTime << endl; cout << "---------------------------------------------------------" << endl; DWORD dwLastTickCount = GetTickCount(); DWORD dwCurTickCount = dwLastTickCount; DWORD dwTimeDiff[100]; int nLoopCount = nLoopNum; while(nLoopCount > 0) { Sleep(nSleepTime); dwCurTickCount = GetTickCount(); dwTimeDiff[nLoopNum - nLoopCount] = dwCurTickCount - dwLastTickCount; dwLastTickCount = dwCurTickCount; --nLoopCount; } for(nLoopCount = 0; nLoopCount < nLoopNum; nLoopCount++) { cout << "TickCount:\t" << dwTimeDiff[nLoopCount] << endl; } DWORD dLastTime = timeGetTime(); DWORD dCurTime = timeGetTime(); nLoopCount = nLoopNum; while(nLoopCount > 0) { Sleep(nSleepTime); dCurTime = timeGetTime(); dwTimeDiff[nLoopNum - nLoopCount] = dCurTime - dLastTime; dLastTime = dCurTime; --nLoopCount; } for(nLoopCount = 0; nLoopCount < nLoopNum; nLoopCount++) { cout << "TimeGetTime:\t" << dwTimeDiff[nLoopCount] << endl; } }
相关文章推荐
- ubuntu安装和配置SVN
- android中的adapter模式
- redis可用性提升(哨兵sentinel)配置示例
- Java中,状态模式和策略模式的区别
- Qt学习之路(3):Hello, world!(续)
- 日期联动
- Java性能优化指南系列(一):概述和性能测试方法
- [Selenium]文件上传时点击上传链接,找不到元素
- Android Bitmap - Drawable-Byte之间的转换
- Qt学习之路(2):Hello, world!
- 使用Eclipse将Web项目打Jar包方法
- jenkins2 pipeline入门
- BlueStacks 设置代理服务器 Proxifier指定任意程序的代理服务器
- 深入浅出MagicalRecord-04
- 初识Volley框架
- python基础之使用os.system来执行系统命令
- velocity模板发布
- ocjective-c 编程基础(四 property保留字)
- LeetCode 7 Reverse Integer
- 14.10.2 File Space Management 文件空间管理: