多线程环境下怎么样确定代码的执行时间[4]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

使用第三种方法的要求和第一种方法一样,它也要求你的程序不被打断,但使用该函数可以得到更精确的时间(100纳秒为单位),所以它也是有用武之地的。我们前面说过WINDOWS调度线程是按时间片来调度,这个时间片是20ms,因此如果你的代码执行时间在20ms内,那么我们就有很大的可能得到正确的时间了;例如:你的代码需要执行20微秒,那么你这样编写代码:

Int I =0;

While(i<2000)

{

    QueryPerformance

       //被测试的代码

   QueryPerformance

}

你会惊奇的发现,你的那段被测试代码执行时间是:

20,20,20,…….,1000,20,20,20……..9000,20,20,….

这种现象的原因是你的这段代码整个时间超过了20ms这个时间片,所以在中间的某次执行时,你的线程被暂停去执行别的代码去了,然后又回来,这个时候就将别的代码执行时间作为你这段测试代码的执行时间了(啊,真冤枉啊,其实我执行的很快被测试代码说)。

好了我们基本知道该如何得到我们代码的执行时间,同样我们没有办法非常准确的得到我们代码执行了多长时间,如果你想使你的代码尽量不被打断,那么你可以试着将你的线程的优先级设置高一些(理论上是线程优先级越高得到CPU的时间就越多,但还是不能保证你的线程不被打断,而且我在测试的时候效果也不明显)。

本文关键:多线程环境下怎么样确定代码的执行时间
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top