use strict; use warnings; use Moose; use Benchmark qw( timethese ); use Exception::Class ( 'Ex1', Ex2 => { isa => 'Ex1' }, ); timethese( 10_000, { 'one arg' => sub { eval { Ex1->throw('foo') }; }, 'named error arg' => sub { eval { Ex1->throw( error => 'foo' ) }; }, 'several args' => sub { eval { Ex1->throw( message => 'foo', ignore_class => 'Bar' ) }; }, } );