我正在計算一個webservice的執行時間爲Benchmark。得到增量的基準對象方法
use strict; use warnings;
use feature qw(say);
use Benchmark qw(:hireswallclock);
my $t0 = Benchmark->new;
1 for (1..10000000); # webservice request goes here
my $t1 = Benchmark->new;
my $td = timediff($t1, $t0);
say 'Code took ' . timestr($td);
這是說:
代碼了0.433091秒掛鐘(0.42 USR + 0.00 SYS = 0.42 CPU)
因爲我想知道的WebService如何快速反應不同的輸入值,這將進入一個循環。我想在數組中保存三角洲(0.433091
),以便日後可以計算平均值。
的Perldoc說約timediff
:
返回兩個基準時間之間的差值作爲適合於傳遞給TIMESTR一個基準物體()。
所以我在想,必須有更多的方法,一定不是嗎?
我想過兩種方式來獲取數:
使用正則表達式:直接
timestr($td) =~ m/([\d\.]+) /; say $1;
訪問它:
use Data::Dumper; print Dumper $td;
這產生了:
$VAR1 = bless([ '0.433090925216675', '0.422', '0', 0, 0, 0 ], 'Benchmark');
,所以我可以只:
say $td->[0];
第一種方法似乎是最簡單的方式,但我不喜歡它。
第二種方法似乎非常不安全。直接訪問對象數據永遠不是一個好主意。當然,必須有一個訪問器方法。
您有什麼建議?有沒有人知道這個Benchmark
對象的訪問器?或者我應該做不同的事情?你會用哪種方式?
作爲基準,不讓它進入生產代碼,我不認爲直接訪問是「非常不安全」。 –