You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ju...@apache.org on 2013/06/06 18:46:09 UTC
svn commit: r1490352 - /jackrabbit/oak/trunk/analyze-hprof.pl
Author: jukka
Date: Thu Jun 6 16:46:08 2013
New Revision: 1490352
URL: http://svn.apache.org/r1490352
Log:
OAK-641: Improved benchmark tooling
Better formatting of hprof analysis reports
Modified:
jackrabbit/oak/trunk/analyze-hprof.pl
Modified: jackrabbit/oak/trunk/analyze-hprof.pl
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/analyze-hprof.pl?rev=1490352&r1=1490351&r2=1490352&view=diff
==============================================================================
--- jackrabbit/oak/trunk/analyze-hprof.pl (original)
+++ jackrabbit/oak/trunk/analyze-hprof.pl Thu Jun 6 16:46:08 2013
@@ -48,28 +48,32 @@ sub accumulate {
}
sub output {
- my ($total, $info, $prefix, $limit) = @_;
+ my ($total, $info, $prefix) = @_;
- my $children = $info->{'children'};
- for my $child (sort { $b->{'count'} - $a->{'count'} } values %{$children}) {
- my $frame = $child->{'frame'};
- my $ratio = int(100 * $child->{'count'} / $total);
- if ($ratio > 1) {
- printf "%s%.1d%% %s\n", $prefix, $ratio, $frame;
- $limit and output($total, $child, "$prefix ", $limit - 1);
- }
+ my @children = values %{$info->{'children'}};
+ @children = grep { $_->{'count'} * 50 > $total } @children or return;
+ @children = sort { $b->{'count'} - $a->{'count'} } @children;
+
+ my $last = $children[-1];
+ for my $child (@children) {
+ printf "%s+%d%% (%d%%) %s\n",
+ $prefix,
+ $child->{'count'} * 100 / $total,
+ $child->{'count'} * 100 / $info->{'count'},
+ $child->{'frame'};
+ output($total, $child, ($child == $last) ? "$prefix " : "$prefix|");
}
}
my $trace = '';
while (<>) {
/^TRACE (\d+)/ and $trace = $1 and $traces{$trace} = [] and next;
- /^\s+([a-z].*?)(\(.*)?\r?\n/ and $trace and $traces{$trace} = [ $1, @{$traces{$trace}} ] and next;
+ /^\s+(?:org\.apache\.jackrabbit\.)?([a-z].*?)(\(.*)?\r?\n/ and $trace and $traces{$trace} = [ $1, @{$traces{$trace}} ] and next;
/^rank/ and $trace and $trace = '' and next;
/^\s*\d+\s+\S+%\s+\S+%\s+(\d+)\s+(\d+)/ and accumulate($2, $1);
}
print "ROOT\n====\n";
-output($root->{'count'}, $root, "", 20);
+output($root->{'count'}, $root, "");
print "LEAF\n====\n";
-output($leaf->{'count'}, $leaf, "", 20);
+output($leaf->{'count'}, $leaf, "");