-
Notifications
You must be signed in to change notification settings - Fork 173
/
Copy pathfound.pl
executable file
·59 lines (57 loc) · 1.16 KB
/
found.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
58
59
#!/usr/local/bin/perl
use strict;
my $len;
my @foundat = ();
my $n = 0;
my $part;
my $nparts;
my $found;
my $time = 0;
while (<>) {
if (/Looking for (\d+)-cycle/) {
$len = $1;
$n++;
die unless /\/(\d+) parts/;
$nparts = $1;
$found = $part = 0;
next;
}
if (/^(\S+)user / ) {
$time += $1;
} elsif (/^user\s+(\d+)m([\.\d]+)/ ) {
$time += 60*$1 + $2;
}
if (!$found && /(\d+)-cycle found/) {
my $l = $1;
if ($l == $len) {
$foundat[$part]++;
$found = 1;
}
}
if (/OVERLOAD/) {
print $_;
next;
}
if (/[uv]part (\d+)/) {
die unless $1 == $part;
$part++;
}
}
my $quartsum = 0;
my $quartparts = 0;
my $sum = 0;
my $sumat = 0;
for my $i (0..$#foundat) {
print "$i\t $foundat[$i]\n";
$sum += $foundat[$i];
if (!$quartparts && $sum >= $n/4) {
$quartparts = $i+1;
$quartsum = $sum;
}
$sumat += ($i+1) * $foundat[$i];
}
print "Total\t $sum/$n\n";
printf("Avg parts\t %.1lf/%d\n", $sumat/$sum, $nparts);
printf("Avg time\t %.1lf\n", $time/$n);
printf("Quartile parts\t (%d/%d) at %d\n", $quartsum, $n, $quartparts);
printf("Quartile time\t %.1lf\n", ($time/$n)*($quartparts/($sumat/$sum)));