我有兩個塊做相同的操作代碼。一個是我自己寫的,另一個是第三方寫的。它們都被編譯成一個可執行文件。第三方代碼似乎能夠比我的工作快得多。與我的500相比,它可以每秒執行1,500次操作。然後,我使用調用圖分析選項在VTune中運行可執行文件,希望這能夠顯示我浪費時間的地方。不幸的是,VTune診斷程序顯示它認爲每個函數需要的微秒數,聲稱這兩個我的函數和第三方函數每次調用大約需要0.002秒。這是我的代碼的亮點,但完全不符合我對第三方代碼速度的(手動)測量。Profiler與真實時機報告的時間 - 爲什麼差異?
這是怎麼發生的?
編輯:這兩個代碼塊都很大,並調用他們自己的複雜子樹功能。
編輯:我應該指出,第三方代碼是純粹的C++,而我的代碼基本上是C編譯的C代碼。
編輯:VTune是一個非常複雜的軟件包,帶有負載的配置選項我不明白。可能有一些設置可以降低這種不準確性嗎?
如果您將它們編譯到同一個可執行文件中,您可能會得到緩存或堆作用,從而使第一次或第二次測試運行速度最快。更改訂單有時會改變結果! – 2011-04-19 15:54:55