# # This software is Copyright 2005 by Elsevier Inc. You may use it # under the terms of the license at http://perl.plover.com/hop/LICENSE.txt . # ### ### profile ### ## Chapter 3 section 12.2 use Time::HiRes 'time'; my (%time, %calls); sub profile { my ($func, $name) = @_; my $stub = sub { my $start = time; my $return = $func->(@_); my $end = time; my $elapsed = $end - $start; $calls{$name} += 1; $time{$name} += $elapsed; return $return; }; return $stub; } END { printf STDERR "%-12s %9s %6s\n", "Function", "# calls", "Elapsed"; for my $name (sort {$time{$b} <=> $time{$a}} (keys %time)) { printf "%-12s %9d %6.2f\n", $name, $calls{$name}, $time{$name}; } }