Files
libgit2/benchmarks/cli/_script/flamegraph/stackcollapse-instruments.pl
Edward Thomson 551b2bbf2d benchmarks: move them to their own folder
Benchmarks aren't really tests, don't keep them in the `tests` folder.
2026-01-10 17:29:52 +00:00

35 lines
680 B
Perl
Executable File

#!/usr/bin/perl -w
#
# stackcollapse-instruments.pl
#
# Parses a file containing a call tree as produced by XCode Instruments
# (Edit > Deep Copy) and produces output suitable for flamegraph.pl.
#
# USAGE: ./stackcollapse-instruments.pl infile > outfile
use strict;
my @stack = ();
<>;
foreach (<>) {
chomp;
/\d+\.\d+ (?:min|s|ms)\s+\d+\.\d+%\s+(\d+(?:\.\d+)?) (min|s|ms)\t \t(\s*)(.+)/ or die;
my $func = $4;
my $depth = length ($3);
$stack [$depth] = $4;
foreach my $i (0 .. $depth - 1) {
print $stack [$i];
print ";";
}
my $time = 0 + $1;
if ($2 eq "min") {
$time *= 60*1000;
} elsif ($2 eq "s") {
$time *= 1000;
}
printf("%s %.0f\n", $func, $time);
}