use strict; use warnings; use Benchmark 'cmpthese'; my @a = map log, 1..1e6; cmpthese( -2, { 1 => sub {[ map $_ * 4, @a ]}, 2 => sub {[ map $_ / (1/4), @a ]}, }); __END__ Rate 1 2 1 7.70/s -- -27% 2 10.6/s 38% -- #### >perl -MDevel::Peek -E "$x=2/1; Dump$x; $y=$x*2; Dump$x; Dump$y" SV = NV(0xd75628) at 0xd75640 REFCNT = 1 FLAGS = (NOK,pNOK) NV = 2 SV = PVNV(0xe26078) at 0xd75640 REFCNT = 1 FLAGS = (IOK,NOK,pIOK,pNOK) IV = 2 NV = 2 PV = 0 SV = IV(0xd75a80) at 0xd75a90 REFCNT = 1 FLAGS = (IOK,pIOK) IV = 4