#!/usr/bin/perl use 5.006; use strict; use warnings; use File::Basename; use File::Spec; use Cwd; BEGIN { chdir dirname(__FILE__) or die "$!"; chdir '..' or die "$!"; unshift @INC, map { /(.*)/; $1 } split(/:/, $ENV{PERL5LIB}) if defined $ENV{PERL5LIB} and ${^TAINT}; my $cwd = ${^TAINT} ? do { local $_=getcwd; /(.*)/; $1 } : '.'; unshift @INC, File::Spec->catdir($cwd, 'inc'); unshift @INC, File::Spec->catdir($cwd, 'lib'); } my %tests = ( '01_EvalDieScalar' => { desc => 'eval/die string' }, '02_EvalDieObject' => { desc => 'eval/die object' }, '03_ExceptionEval' => { desc => 'Exception::Base eval/if' }, '04_Exception1Eval' => { desc => 'Exception::Base eval/if verbosity=1' }, '05_Error' => { desc => 'Error' }, '06_ClassThrowable' => { desc => 'Class::Throwable' }, '07_ExceptionClass' => { desc => 'Exception::Class' }, '08_ExceptionClassTC' => { desc => 'Exception::Class::TryCatch' }, '09_TryCatch' => { desc => 'TryCatch' }, '10_TryTiny' => { desc => 'Try::Tiny' }, ); foreach my $scenario qw{ ok fail } { open my $fh, '-|', "$^X xt/benchmark_$scenario.pl " . ($ARGV[0] || -1) or die; while ($_ = <$fh>) { print; /^(\d\d_\w+)\s+(\d+)\/s/ or next; my ($test, $result) = ($1, $2); $tests{$test}{$scenario} = $result; }; close $fh or die; }; print " -----------------------------------------------------------------------\n"; print " | Module | Success sub/s | Failure sub/s |\n"; print " -----------------------------------------------------------------------\n"; foreach my $test (sort keys %tests) { next unless exists $tests{$test}{ok} and exists $tests{$test}{fail}; printf " | %-35.35s | %13.13s | %13.13s |\n", $tests{$test}{desc}, $tests{$test}{ok}, $tests{$test}{fail}; print " -----------------------------------------------------------------------\n"; };