#!/usr/bin/perl use strict; use warnings; use Benchmark qw(cmpthese); my @working; $#working = 100; cmpthese( -10, { assign => '@working = (); $working[$_] = $_ foreach ( 0...100 );', assign_undef => 'undef @working; $working[$_] = $_ foreach ( 0...100 );', assign_length => '@working = ()[0...100]; $working[$_] = $_ foreach ( 0...100 );', using_x => '@working = (undef) x 101; $working[$_] = $_ foreach ( 0...100 );', x_with_value => '@working = 1 x 101; $working[$_] = $_ foreach ( 0...100 );', } ); #### Rate using_x assign_undef x_with_value assign_length assign using_x 21456/s -- -5% -7% -12% -13% assign_undef 22605/s 5% -- -2% -8% -8% x_with_value 23108/s 8% 2% -- -5% -6% assign_length 24448/s 14% 8% 6% -- -1% assign 24637/s 15% 9% 7% 1% -- #### Rate using_x assign_undef assign_length x_with_value assign using_x 35870/s -- -1% -1% -2% -4% assign_undef 36133/s 1% -- -0% -1% -4% assign_length 36298/s 1% 0% -- -1% -3% x_with_value 36540/s 2% 1% 1% -- -3% assign 37497/s 5% 4% 3% 3% --