hur.cn - 华软网

 热门搜索

有关代码执行时间的疑问

  作者:未知    来源:网络    更新时间:2011/10/6
在一段代码while循环代码的前后各自添加了
C++">DWORD StartTime = GetTickCount();
TRACE("StartTime = %d \n",StartTime);


C++">	DWORD EndTime = GetTickCount();
TRACE("EndTime = %d \n",EndTime);


输入结果如下:
StartTime = 9437937 
EndTime = 9437937 
StartTime = 9437937 
EndTime = 9437937 
StartTime = 9437937 
EndTime = 9437937 
StartTime = 9437937 
EndTime = 9437937 
StartTime = 9437937 
EndTime = 9437953 
StartTime = 9437953 
EndTime = 9437953 
StartTime = 9437953 
EndTime = 9437953 
StartTime = 9437953 
EndTime = 9437953 
StartTime = 9437953 
EndTime = 9437953 
StartTime = 9437968 
EndTime = 9437968 
StartTime = 9437968 
EndTime = 9437968 
StartTime = 9437968 
EndTime = 9437968 
StartTime = 9437968 
EndTime = 9437968 
StartTime = 9437968 
EndTime = 9437968 
StartTime = 9437968 
EndTime = 9437984 
StartTime = 9437984 
EndTime = 9437984 
StartTime = 9437984 
EndTime = 9437984 
StartTime = 9437984 
EndTime = 9437984 
StartTime = 9437984 
EndTime = 9437984 
StartTime = 9438000 
EndTime = 9438000 
StartTime = 9438000 
EndTime = 9438000 
StartTime = 9438000 
EndTime = 9438000 
StartTime = 9438000 
EndTime = 9438000 
StartTime = 9438000 
EndTime = 9438000 
StartTime = 9438015 
EndTime = 9438015 
StartTime = 9438015 
EndTime = 9438015 
StartTime = 9438015 
EndTime = 9438015 
StartTime = 9438015 
EndTime = 9438015 
StartTime = 9438015 
EndTime = 9438015 
StartTime = 9438031 
EndTime = 9438031 
StartTime = 9438031 
EndTime = 9438031 
StartTime = 9438031 
EndTime = 9438031 
StartTime = 9438031 
EndTime = 9438031 
StartTime = 9438031 
EndTime = 9438031 
StartTime = 9438046 
EndTime = 9438046 
StartTime = 9438046 
EndTime = 9438046 
StartTime = 9438046 
EndTime = 9438046 
StartTime = 9438046 
EndTime = 9438046 
StartTime = 9438046 
EndTime = 9438062 
StartTime = 9438062 


想不明白为什么,挺长的一段代码,为什么输出的时间是每隔5个就突变一下,难道每次执行同一段代码的时间不一样吗?为什么 这么有规律性呢?
---华软 网友回答---
GetTickCount获得的是当前程序运行后的秒数吧?既然是秒,就不精确了。试试GetSystemTime。
---华软网友回复---
不妨参阅“VC实现精确定时器”一文,可能会做得更好。多看,多想,多动手,这是偶的编程体会。
---华软网友回复---
引用 1 楼 luciferstar 的回复:
GetTickCount获得的是当前程序运行后的秒数吧?既然是秒,就不精确了。试试GetSystemTime。

GetTickCount返回(retrieve)从操作系统启动到现在所经过(elapsed)的毫秒数
---华软网友回复---
不好意思,记错了。
搜索了一下,据说WIN9x的时候这个时间会每54微秒变化一次,NT是10--16微秒?
所以,如果循环能在16微秒内完成的话,前后两次GetTickCount的差值,就为0了。
传送门:http://zhidao.baidu.com/question/148894842.html
http://social.msdn.microsoft.com/Forums/zh-CN/232/thread/b2bcd219-1dc0-410a-a4d4-e4d9b8e17f0b
---华软网友回复---
windows不是实时操作系统,时间不是极其准确的
---华软网友回复---
在程序里加几个sleep会有影响不。。。。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。