我有兩個功能可以執行相同的功能但已經以不同的方式實現。我想使用兩者中的高效率。如何確定兩個相似功能的效率更高
我可以在輸入和退出文件中的函數之前編寫Timestamp
。但我想知道是否有更好的方法來弄清楚上述情況。
我看到profilers
像VerySleepy, Visual Studios 2008 C++ Profiler
但他們生成的信息是哪個函數被調用時。 (也許我在使用它們時出錯了)。 也想知道在Linux上是否有像Visual C++存在的東西,如Valgrind
。
我有兩個功能可以執行相同的功能但已經以不同的方式實現。我想使用兩者中的高效率。如何確定兩個相似功能的效率更高
我可以在輸入和退出文件中的函數之前編寫Timestamp
。但我想知道是否有更好的方法來弄清楚上述情況。
我看到profilers
像VerySleepy, Visual Studios 2008 C++ Profiler
但他們生成的信息是哪個函數被調用時。 (也許我在使用它們時出錯了)。 也想知道在Linux上是否有像Visual C++存在的東西,如Valgrind
。
如果你真的只想比較這兩個,那麼做Timestamp
的事情,但調用每個函數說每個100萬次,並比較聚合時間。
start timer
for i = 1 to 1m, call function
stop timer
這種方法假定的功能的執行時間不依賴於它被稱爲的次數,即第一時間打電話約需只要任何後續調用。
如果您需要更詳細的性能分析信息,請登錄plenty of options。
比較*最小*每個的時間。另見http://stackoverflow.com/a/4532685/916657 – 2012-04-23 17:17:39
@尼克拉斯 - 我會說這取決於代碼,但好點 – 2012-04-23 17:20:29
當然,這取決於功能。不過,對於「純粹」功能來說總是如此。 – 2012-04-23 17:36:20
我通常只使用QueryPerformanceCounter()來定時調用 - 請參閱http://stackoverflow.com/questions/4727006/c-logging-and-performance-tuning-library – 2012-04-23 17:15:25