辛苦了一个下午的时间,终于找到了C语言(非C++)中精确控制时间的方法,可以达到0.01微秒级。
我们经常所用的clock_t方法,只能到毫秒级,而且在10ms以下将不再准确,对于更精确的程序时间计算来说,显然是不行的。通过硬件的方式,以及Windows的一些函数可以解决这个问题,需要用到:
1、QueryPerformanceFrequency(&Freq);//获得当前的计数频率,即每秒进行多少次计数
2、QueryPerformanceCounter(&limtp);//获取当前计数次数
这是一种基于cpu级的方法,获得时间为:
(计数获取计数次数 -
开始获取计数次数)/(用QueryPerformanceFrequency获取的Freq.QuadPart)
为了更好地说明问题,通过程序来举例:
QueryPerformanceFrequency(&nFreq);
QueryPerformanceCounter(&t1);
{statement section}
QueryPerformanceCounter(&t2);
dt =
(t2.QuadPart - t1.QuadPart) / nFreq;
printf("Running time : %g ms\t",dt);
部分内容省略,效果图如下:
http://s15/middle/9700e68dtb65482b3c20e&690
如有转载,请注明出处:http://blog.sina.com.cn/bjutqkleng
bjutqkleng@126.com
加载中,请稍候......