#!/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% --