use Benchmark::Timer; $T = new Benchmark::Timer; $T->start( 'autoviv' ); $auto[ $_ ] = 1 for map{ 10**$_ } 0 .. 7; $T->stop( 'autoviv' ); $#pre = 10**7; $T->start( 'prealloc' ); $pre[ $_ ] = 1 for map{ 10**$_ } 0 .. 7; $T->stop( 'prealloc' ); $T->report; 1 trial of autoviv (93.750ms total) 1 trial of prealloc (15.625ms total)