用多媒体实时计数器,效果应该可以,不过只能达到毫秒级,如果达到微秒级,需要使用实时操作系统才能获得,因为多任务系统的频繁切换会导致即使不准,因此windows的计数器不可能达到微秒级,甚至1ms都是很难达到的(实际上windows多媒体实时计数器并不够精确)
解决方案 »
- 怎样去掉CWebBrowser2空间显示网页的滚动条
- 声明完变量,什么都不处理,出现XXX指令引用的XXX内存,改内存无法read或则write
- 问个WM_CREATE的问题 很初级 见笑
- DLL中调用ocx问题
- 怎样使用PutPropertyByName给表单元素赋值?
- ClistCtrl里添加复选按钮,第1,2,3列都要有,
- 急急急>>>>关于DCOM ........
- 用完成端口做的SERVER端,用于接收UDP数据包的,如何判断出每一个包的来源地址和端口?
- CRichEditCtrl中如何改变单个文字的背景色?
- 关于判断INI文件设置让check box默认选的问题
- 如何判断当前系统中是否有IE再运行?
- 请问Unicode到底是什么概念,能不对其实质的大家讨论一下?
QueryPerformanceFrequency可以查到
//nLow32,低32位 nHigh32,高32位
void GetCurrentLowLevelTime(long &nLow32,long &nHigh32)
{
_asm __emit 0fh
_asm __emit 031h
_asm mov nLow32,eax
_asm mov nHigh32,edx
}
所以我要的是正常工作状况下的统计数值。Wugifer() : 谢谢, 我马上试一下
jyu1221(天同) : 我知道很多的指令执行的时间并不是相同的,比如mov指令对
各种操作数所执行的时间都有不同,不知道你所说的计数器得到的数据的单位是?因为这部分代码的效率对整个系统的速度影响巨大, 只好测量一下是否它是瓶颈所在。
实在不行的话可能只能用汇编来重写了,这又是很大的工作量 :(
如果你打算测试软件的效率,有专用的工具可以测试,你的测试结果可能不会很准,还是用用工具吧
不过我对你所说的工具也很感兴趣,请问是什么工具啊?To Wugifer() : 我用你的方法已经测试出来了, 为5ms。等一下给你分To jyu1221(天同): 这个时钟频率是 外频?主频?还是其他什么频率?不要笑我苯,我对这个东东不大了解 :(