2012-04-23 61 views
0

我有兩個功能可以執行相同的功能但已經以不同的方式實現。我想使用兩者中的高效率。如何確定兩個相似功能的效率更高

我可以在輸入和退出文件中的函數之前編寫Timestamp。但我想知道是否有更好的方法來弄清楚上述情況。

我看到profilersVerySleepy, Visual Studios 2008 C++ Profiler但他們生成的信息是哪個函數被調用時。 (也許我在使用它們時出錯了)。 也想知道在Linux上是否有像Visual C++存在的東西,如Valgrind

+0

我通常只使用QueryPerformanceCounter()來定時調用 - 請參閱http://stackoverflow.com/questions/4727006/c-logging-and-performance-tuning-library – 2012-04-23 17:15:25

回答

1

如果你真的只想比較這兩個,那麼做Timestamp的事情,但調用每個函數說每個100萬次,並比較聚合時間。

start timer 
for i = 1 to 1m, call function 
stop timer 

這種方法假定的功能的執行時間不依賴於它被稱爲的次數,即第一時間打電話約需只要任何後續調用。

如果您需要更詳細的性能分析信息,請登錄plenty of options

+1

比較*最小*每個的時間。另見http://stackoverflow.com/a/4532685/916657 – 2012-04-23 17:17:39

+0

@尼克拉斯 - 我會說這取決於代碼,但好點 – 2012-04-23 17:20:29

+0

當然,這取決於功能。不過,對於「純粹」功能來說總是如此。 – 2012-04-23 17:36:20