Edi*_*enz 5 c++ performance profiler
我有一个表现良好的例程.但是,我不得不改变它.这种改变提高了程序的精确度但却损害了性能.
例程是大量的数学计算,可能是CPU绑定(我仍然需要对此进行更严格的测试,但我99%肯定).它是用C++编写的(编译器是Borland C++ 6).
我现在想测量一下例程的性能,首先我考虑测量执行时间,但在我看来这是一种有缺陷的方法,因为可能会有更多的事情发生.
然后我讨论了这个主题:测量应用程序性能的技术 - Stack Overflow.我喜欢通过MFlops测量的想法.
我的老板建议尝试通过cpu时钟周期进行某种测量,因此测试将与机器无关,但是,我认为这种方法属于MFlops测试.
在我看来,衡量两件事(执行时间和MFlops)是要走的路,但我想听听stackoverflow专家你们的想法.
测量CPU绑定例程性能的方法是什么?
如果您的应用程序受内存限制,CPU时钟周期也不是那么多.在更快的CPU上,您将花费更多的CPU周期等待相同的缓存未命中.(数学应用程序可能不受I/O限制).
另一个问题是某个指令序列的时钟周期数仍然会因架构而异(甚至包括Intel Core1/Core2之间).因此,作为性能的绝对衡量标准,一个CPU上的时钟周期几乎没有改进.
我认为他们实际上更糟糕的是作为衡量标准.与时间不同,用户不关心周期.这对于现代多核CPU尤其重要.使用两倍循环次数和3个核心的"低效"算法将在67%的时间内完成.用户可能会喜欢这样.
我同意你老板的观点——以CPU时钟周期来衡量。但请注意,可能还会发生其他情况,例如大量缓存未命中会减慢代码速度。如果可以,请使用 VTune 或 Intel 的免费工具之一来查明瓶颈的性质。
| 归档时间: |
|
| 查看次数: |
1965 次 |
| 最近记录: |