forked from mozilla/gecko-dev
-
Notifications
You must be signed in to change notification settings - Fork 2
/
printlog.pl
57 lines (46 loc) · 1.2 KB
/
printlog.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# Post processor for timeline output
# Does a diff betn consecutive timeline outputs looking for
# big % differences
my $percent = 1; # anything over 1% of total is of interest to us
my $ignoreDllLoads = 0; # by default don't ignore dll timings
# Read in log to memory
my @lines = <>;
my $total = 0;
# Look for main1's timing
foreach (@lines) {
if (/^([0-9\.]*): \.\.\.main1/) {
$total = $1 + 0;
print "Found main1 time: $total\n";
last;
}
}
my $prev = 0;
my $t = $total * $percent / 100;
foreach (@lines) {
/^([0-9\.]*):/;
$cur = $1;
printdiff($cur, $prev, $_);
if (/total: ([0-9\.]*)/) {
# print how much % this was
printf "%4.2f%%", $1/$total*100;
}
print "\t$_";
$prev = $cur;
}
sub printdiff() {
my $cur = shift;
my $prev = shift;
my $line = shift;
my $diff = $cur - $prev;
# Make sure we have a considerable difference
if ($diff < $t) {
return 0;
}
# If we are ignoring dlls and this is a dll line, return
if ($ignoreDllLoads && $line =~ /PR_LoadLibrary/) {
return 0;
}
# if significant time elapsed print it
printf "%4.2f%% %5.3f\n", $diff/$total*100, $diff;
return 1;
}