sub _r_max { my $h = shift; return $h unless @_; $_[0] = $h if $h > $_[0]; &_r_max; } sub r_max{ _r_max( @{[ @_ ]} ) } __END__ C:\test>junk3 -N=100 Rate amp unrolled r_max amp 4755/s -- -35% -50% unrolled 7275/s 53% -- -24% r_max 9522/s 100% 31% -- C:\test>junk3 -N=2000 Rate amp unrolled r_max amp 183/s -- -50% -51% unrolled 363/s 98% -- -2% r_max 372/s 103% 2% --