File: fflprof.pl

package info (click to toggle)
frogatto-data 1.3.1%2Bdfsg-4
  • links: PTS, VCS
  • area: non-free
  • in suites: forky, sid, trixie
  • size: 254,428 kB
  • sloc: xml: 584; python: 396; perl: 249; sh: 126; ruby: 69; makefile: 21
file content (59 lines) | stat: -rwxr-xr-x 1,425 bytes parent folder | download | duplicates (4)
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
58
59
#!/usr/bin/perl

use strict;

my %objects = ();
my %events = ();
my $empty_samples = 0;
my $busy_samples = 0;
my $ffl_samples = 0;
while(my $line = <STDIN>) {
	if(my ($samples) = $line =~ /SAMPLES EMPTY: (\d+)/) {
		$empty_samples = $samples;
		next;
	}

	chomp $line;
	my ($obj, $event, $mode) = split /:/, $line or die "invalid line: $line";

	++$ffl_samples if $mode eq 'FFL';
	++$busy_samples;

	$objects{$obj}++;
	$events{"$obj:$event"}++;
}

my $total_samples = $empty_samples + $busy_samples;
print "TOTAL SAMPLES: $total_samples\n";
my $empty_percent = sprintf "%.1f", (100*$empty_samples/$total_samples);
my $ffl_percent = sprintf "%.1f", (100*$ffl_samples/$total_samples);
my $cmd_percent = sprintf "%.1f", (100*($busy_samples - $ffl_samples)/$total_samples);

print "
$empty_percent% of CPU usage was unrelated to object event handling
$ffl_percent% of CPU usage was spent evaluating formulas
$cmd_percent% of CPU usage was spent executing commands returned from formulas

";

sub output_map {
	my $map = shift @_;
	my @array = ();
	foreach my $key (keys %$map) {
		push @array, [$key, $map->{$key}];
	}

	@array = sort {$b->[1] <=> $a->[1]} @array;
	foreach my $item (@array) {
		my $a = $item->[0];
		my $b = $item->[1];
		my $percent = sprintf "%.1f", (100*$b/$busy_samples);
		print "$percent% $a\n";
	}
}

print " == OBJECTS ==\n";
&output_map(\%objects);

print "\n\n == EVENTS ==\n";
&output_map(\%events);