moo@cow[483]~>perl pm-dice use strictures; use Benchmark "cmpthese"; sub d10 { my $self = shift; return rand(10); } sub d10_2 { rand(10) } sub d10_3 { 1 + int( rand(10) ) } sub d10_4 { 1 + rand(10) } cmpthese( 10_000_000, { orig => \&d10, orig_simple => \&d10_2, int_plus_one => \&d10_3, plus_one => \&d10_4, }); __END__ Rate orig int_plus_one plus_one orig_simple orig 4048583/s -- -19% -38% -74% int_plus_one 5000000/s 24% -- -24% -68% plus_one 6578947/s 62% 32% -- -59% orig_simple 15873016/s 292% 217% 141% --