sub _i_max {{ my $h = shift; return $h unless @_; $_[0] = $h if $h > $_[0]; redo; }} sub i_max{ _i_max( @{[ @_ ]} ) } __END__ C:\test>junk3 -N=5e3 Rate amp r_max unrolled i_max amp 70.4/s -- -48% -52% -73% r_max 136/s 94% -- -7% -47% unrolled 147/s 110% 8% -- -43% i_max 257/s 265% 88% 74% -- C:\test>junk3 -N=5e4 Rate amp r_max unrolled i_max amp 6.79/s -- -47% -53% -72% r_max 12.7/s 88% -- -12% -47% unrolled 14.5/s 113% 14% -- -39% i_max 23.9/s 252% 87% 65% -- C:\test>junk3 -N=5e5 (warning: too few iterations for a reliable count) Rate amp r_max unrolled i_max amp 0.678/s -- -47% -53% -72% r_max 1.27/s 88% -- -12% -47% unrolled 1.44/s 112% 13% -- -39% i_max 2.38/s 251% 87% 65% --