测试程序的速度是优化工作的一个重要部分。你必须检查你的修改是否确实提高了速度。
有各种各样的分析器可用于查找热点和测量程序的总体性能。然而,分析器并不总是准确的,当程序花费大部分时间等待用户输入或读取磁盘文件时,可能很难准确测量您想要的内容。有关分析的讨论,请参见执行时间分析。
确定热点后,隔离热点并仅对代码的这一部分进行测量可能很有用。这可以通过使用所谓的时间戳计数器获取CPU时钟周期来完成。这是一个计数器,用于测量CPU启动后的时钟脉冲数。时钟周期的长度是时钟频率的倒数,参见执行时间分析。如果在执行一段关键代码之前和之后读取时间戳计数器的值,则可以获得两个时钟计数之间的差作为确切的时间消耗。
。。。
测量的时间按以下方式解释。第一次计数通常高于后续计数。这是在代码和数据未缓存时执行CriticalFunction
所需的时间。随后的计数给出了代码和数据缓存后的执行时间。第一次计数和后续计数分别表示“最坏情况”和“最佳情况”值。这两个值中哪一个最接近真值取决于在最终程序中是调用CriticalFunction
一次还是多次,以及在调用CriticalFunction
期间是否有其他代码使用缓存。如果你的优化工作集中在CPU效率上,那么应该查看“最佳情况”计数,以确定某个修改是否有效。另一方面,如果你的优化工作集中在安排数据以提高缓存效率,那么还可以查看“最坏情况”计数。在所有情况下,时钟计数应乘以时钟