#!/usr/bin/perl while (<>) { if (/^\s+\d+\.\d+%\s+(\d+)\s+(\d+)-\d+\s+[^)]+\)\s+(\S+)\s*$/) { $times{$3} += $1*1.0; $calls{$3} += $2*1.0; } if (/^\s+([a-zA-Z_0-9]+) : (\d+)$/) { $stats{$1} += $2*1.0; } } $max = 0; foreach $key (sort { $times{$b} <=> $times{$a} } keys %times) { $max = $times{$key} if ($max == 0); printf "%7.2f%% %12.3f %10.0f %s\n", $times{$key}*100/$max, $times{$key}/1000, $calls{$key}, $key; } foreach $key (sort (keys %stats)) { printf "%30s : %d\n", $key, $stats{$key}; }