我有两个块做相同的操作代码。一个是我自己写的,另一个是第三方写的。它们都被编译成一个可执行文件。第三方代码似乎能够比我的工作快得多。与我的500相比,它可以每秒执行1,500次操作。然后,我使用调用图分析选项在VTune中运行可执行文件,希望这能够显示我浪费时间的地方。不幸的是,VTune诊断程序显示它认为每个函数需要的微秒数,声称这两个我的函数和第三方函数每次调用大约需要0.002秒。这是我的代码的亮点,但完全不符合我对第三方代码速度的(手动)测量。Profiler与真实时机报告的时间 - 为什么差异?
这是怎么发生的?
编辑:这两个代码块都很大,并调用他们自己的复杂子树功能。
编辑:我应该指出,第三方代码是纯粹的C++,而我的代码基本上是C编译的C代码。
编辑:VTune是一个非常复杂的软件包,带有负载的配置选项我不明白。可能有一些设置可以降低这种不准确性吗?
如果您将它们编译到同一个可执行文件中,您可能会得到缓存或堆作用,从而使第一次或第二次测试运行速度最快。更改订单有时会改变结果! – 2011-04-19 15:54:55