beware of polymorphic types in typed translation symbol declarations -- match alpha-equivalent types and, more importantly, prevent unsoundnesses by generating type constraints on the arguments of a polymorphic symbols (otherwise "hAPP" can be given any result type)
#!/usr/bin/env perl
#
# Author: Makarius
#
# DESCRIPTION: Simple report generator for Poly/ML profiling output.
use strict;
my %log = ();
my @output = ();
while (<ARGV>) {
if (m,^([ 0-9]{10}) (\S+$|GARBAGE COLLECTION.*$),) {
my $count = $1;
my $fun = $2;
$fun =~ s,-?\(\d+\).*$,,g;
$fun =~ s,/\d+$,,g;
if ($count =~ m,^\s*(\d)+$,) {
if (defined($log{$fun})) {
$log{$fun} += $count;
} else {
$log{$fun} = $count;
}
}
}
}
foreach my $fun (keys %log) {
push @output, (sprintf "%14u %s\n", $log{$fun}, $fun);
}
print (sort @output);