#!/usr/bin/perl use strict; use warnings; use Benchmark qw/cmpthese/; my $lng = shift(@ARGV) || die "Usage: $0 length [-count]\n"; my $cnt = shift(@ARGV) || "-10"; cmpthese ($cnt, { 'Version 1' => sub { push_fast($lng) }, 'Version 2' => sub { cnt_fast1($lng) }, 'Version 3' => sub { cnt_fast1($lng) } } ); sub push_fast { my $l=shift(@_); my @arr; map{ push(@arr,"TEST") }(0..$l); } sub cnt_fast1 { my $l=shift(@_); my @arr=(0)x$l; my $c=0; map{ $arr[$c++]="TEST" }(0..$l); } sub cnt_fast2 { my $l=shift(@_); my @arr; $#arr = $l; my $c=0; map{ $arr[$c++]="TEST" }(0..$l); }