use strict;
use warnings;
use Benchmark 'cmpthese';
cmpthese(10000, {
'eval' => sub { eval_code() },
'noeval' => sub { no_eval_code() },,
});
sub eval_code {
my $x = 0;
for (1..1000) {
eval {
$x+=1;
}
}
}
sub no_eval_code {
my $x = 0;
for (1..1000) {
$x+=1;
}
}
####
Rate eval noeval
eval 1495/s -- -62%
noeval 3953/s 164% --
##
##
use strict;
use warnings;
use Benchmark 'cmpthese';
cmpthese(1000000, {
'eval' => sub { eval_code() },
'noeval' => sub { no_eval_code() },,
});
sub eval_code {
my $x = 0;
for (reverse 0..9) {
eval {
my $x = 100/$_;
};
if ($@) {
error_sub();
}
}
}
sub no_eval_code {
for (reverse 0..9) {
if ($_==0) {
error_sub();
}
else {
my $x = 100/$_;
}
}
}
##
##
Rate eval noeval
eval 67797/s -- -39%
noeval 111111/s 64% --