我有一个类似的问题,我想进行优化。这个想法是多次运行程序,然后输出运行持续时间的统计信息。
我使用了以下命令行:
第一次运行: (time ./myprog)2>times.log
下一次运行: (time ./myprog)2>>times.log
请注意,我的 (bash?) 内置 time 以以下形式输出统计信息:
real 0m2.548s
user 0m7.341s
sys 0m0.007s
然后我运行以下 Perl 脚本来检索统计信息:
#!/usr/bin/perl -w
open FH, './times.log' or die "ERROR: ", $!;
my $useracc1 = 0;
my $useracc2 = 0;
my $usermean = 0;
my $uservar = 0;
my $temp = 0;
while(<FH>)
{
if("$_" =~ /user/)
{
if("$_" =~ /(\d+)m(\d{1,2})\.(\d{3})s/)
{
$usercpt++;
$temp = $1*60 + $2 + $3*0.001;
$useracc1 += $temp;
$useracc2 += $temp**2;
}
}
}
if($usercpt ne 0)
{
$usermean = $useracc1 / $usercpt;
$userdev = sqrt($useracc2 / $usercpt - $usermean**2);
$usermean = int($usermean*1000)/1000;
$userdev = int($userdev*1000)/1000;
}
else
{
$usermean = "---";
$userdev = "---";
}
print "User: ", $usercpt, " runs, avg. ", $usermean, "s, std.dev. ", $userdev,"s\n";
当然,正则表达式可能需要根据您的time 输出格式进行调整。它也可以很容易地扩展到包括真实和系统统计数据。