зеркало из https://github.com/mozilla/pjs.git
131 строка
3.5 KiB
Perl
131 строка
3.5 KiB
Perl
|
#!/usr/bin/perl -w
|
||
|
|
||
|
%::Sites = ();
|
||
|
|
||
|
@::Categories = (
|
||
|
Content,
|
||
|
Reflow,
|
||
|
Frame,
|
||
|
Style,
|
||
|
Parse,
|
||
|
DTD,
|
||
|
Tokenize,
|
||
|
Total
|
||
|
);
|
||
|
|
||
|
$::CurrentSite = "";
|
||
|
|
||
|
LINE: while (<>) {
|
||
|
if (/^\*\*\* Timing layout processes on url: '(.*)'/) {
|
||
|
# This will generate a URL that looks something like:
|
||
|
#
|
||
|
# file:///foo/bar/website/index.html
|
||
|
#
|
||
|
# So, we'll parse out the ``website'' part...
|
||
|
my @parts = split('/', $1);
|
||
|
$::CurrentSite = $parts[$#parts - 1];
|
||
|
|
||
|
if (! $::Sites{$::CurrentSite}) {
|
||
|
$::Sites{$::CurrentSite} = {};
|
||
|
}
|
||
|
next LINE;
|
||
|
}
|
||
|
|
||
|
next LINE unless $::CurrentSite;
|
||
|
|
||
|
CATEGORY: foreach $category (@::Categories) {
|
||
|
next CATEGORY unless (/$category/);
|
||
|
|
||
|
# The "real time" is indicated in HH:MM:SS.mmmm format
|
||
|
my ($h,$m,$s,$ms) = /Real time (..):(..):(..)\.(....)/;
|
||
|
my $real = $ms;
|
||
|
$real += $s * 1000;
|
||
|
$real += $m * 1000 * 60;
|
||
|
$real += $h * 1000 * 60 * 60;
|
||
|
|
||
|
# The "CPU time" is indicated in m.uuu format
|
||
|
my ($cpu) = /CP time (.*\....)/;
|
||
|
|
||
|
my $site = $::Sites{$::CurrentSite};
|
||
|
if (! $site->{$category}) {
|
||
|
$site->{$category} = { Count => 0, Real => 0, CPU => 0, Real2 => 0, CPU2 => 0 };
|
||
|
}
|
||
|
|
||
|
$site->{$category}->{Count} += 1;
|
||
|
$site->{$category}->{Real} += $real;
|
||
|
$site->{$category}->{CPU} += $cpu;
|
||
|
$site->{$category}->{Real2} += $real * $real;
|
||
|
$site->{$category}->{CPU2} += $cpu * $cpu;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
my $bgcolor0 = '#999999';
|
||
|
my $bgcolor1 = '#777777';
|
||
|
|
||
|
my $bgcolor;
|
||
|
|
||
|
print "<table border='0' cellpadding='2' cellspacing='0'>\n";
|
||
|
|
||
|
print "<tr>\n";
|
||
|
print " <td rowspan='2' valign='bottom'>Site</td>\n";
|
||
|
|
||
|
$bgcolor = $bgcolor0;
|
||
|
foreach $category (@::Categories) {
|
||
|
print " <td bgcolor='$bgcolor' align='center' colspan='4'>$category</td>\n";
|
||
|
$bgcolor = ($bgcolor eq $bgcolor0) ? $bgcolor1 : $bgcolor0;
|
||
|
}
|
||
|
print "</tr>\n";
|
||
|
|
||
|
print "<tr>\n";
|
||
|
|
||
|
$bgcolor = $bgcolor0;
|
||
|
foreach $category (@::Categories) {
|
||
|
print " <td bgcolor='$bgcolor' align='center' colspan='2'>CPU</td> <td bgcolor='$bgcolor' align='center' colspan='2'>Real</td>\n";
|
||
|
$bgcolor = ($bgcolor eq $bgcolor0) ? $bgcolor1 : $bgcolor0;
|
||
|
}
|
||
|
print "</tr>\n";
|
||
|
|
||
|
foreach $sitename (sort(keys(%::Sites))) {
|
||
|
print "<tr>\n";
|
||
|
|
||
|
my $site = $::Sites{$sitename};
|
||
|
print " <td>$sitename</td>\n";
|
||
|
|
||
|
$bgcolor = $bgcolor0;
|
||
|
foreach $category (@::Categories) {
|
||
|
my $count = $site->{$category}->{Count};
|
||
|
my $real = $site->{$category}->{Real};
|
||
|
my $cpu = $site->{$category}->{CPU};
|
||
|
my $real2 = $site->{$category}->{Real2};
|
||
|
my $cpu2 = $site->{$category}->{CPU2};
|
||
|
|
||
|
my $realdev = 0;
|
||
|
my $cpudev = 0;
|
||
|
|
||
|
if ($count) {
|
||
|
if ($count > 1) {
|
||
|
$realdev = sqrt( ( $real2 * $count - $real * $real ) / ( $count * ( $count - 1 ) ) );
|
||
|
$cpudev = sqrt( ( $cpu2 * $count - $cpu * $cpu ) / ( $count * ( $count - 1 ) ) );
|
||
|
}
|
||
|
|
||
|
$real /= $count;
|
||
|
$cpu /= $count;
|
||
|
}
|
||
|
else {
|
||
|
$count = 0;
|
||
|
$real = 0;
|
||
|
$cpu = 0;
|
||
|
}
|
||
|
|
||
|
printf " <td bgcolor='$bgcolor' align='right'>%0.2lf</td><td bgcolor='$bgcolor' align='left'>±%0.2lf</td>\n", $cpu, $cpudev;
|
||
|
printf " <td bgcolor='$bgcolor' align='right'>%0.2lf</td><td bgcolor='$bgcolor' align='left'>±%0.2lf</td>", $real, $realdev;
|
||
|
|
||
|
$bgcolor = ($bgcolor eq $bgcolor0) ? $bgcolor1 : $bgcolor0;
|
||
|
}
|
||
|
|
||
|
print "</tr>\n";
|
||
|
}
|
||
|
|
||
|
print "</table>\n";
|
||
|
|