# srand(0) is used to make sure both # subs are using the same input set. sub m1 { unless ($i1) { srand(0); $i1=1; } $n = rand; $p = $n ** 2; } sub m2 { unless ($i2) { srand(0); $i2=1; } $n = rand; $p = $n * $n; } use Benchmark; Benchmark::cmpthese(0, { '$n**2' => \&m1, '$n*$n' => \&m2, }); __END__ Rate $n**2 $n*$n $n**2 722292/s -- -29% $n*$n 1013884/s 40% --