摘要如何解釋由Perl的Benchmark模塊報告的基準時間?
當我使用Perl的Benchmark工具執行一個非常簡單的程序。我得到的值不是(顯示爲)毫秒或納秒。返回的基準數據對我無用,因爲我不知道如何解釋它。
例子:
use Benchmark;
my $start = Benchmark->new;
print "foo!";
my $end = Benchmark->new;
my $diff = timediff($end, $start);
print timestr($diff);
返回:foo! 0 wallclock secs (0.00 usr + 0.00 sys = 0.00 CPU)
什麼不同字段的含義:掛鐘秒,USR,SYS CPU?他們可以外推得到毫秒值嗎?現在對於我的基準測試來說,我所需要的只是一個單一執行的實際時間,而不需要考慮基準測試中更深奧的一些方面。
你真的很想「使用Benchmark」:hireswallclock'「或者避免首先以這種方式使用模塊。 「wallclock」時間就是你的「真實世界時間」。嘗試用宏觀運行時間對代碼段進行基準測試。如果這是不可能的,因爲額外的循環會使結果偏離太多,那麼你就是微觀優化,我們都知道你不應該那樣做。 – tsee 2010-09-23 07:27:47
只運行一次不會給你一個好的結果。您需要數千次運行您的操作才能獲得有用的實際(平均值)數據。 – Ether 2010-09-23 16:18:55