#!/usr/bin/perl
use warnings;
use strict;
use Test::More tests => 3;
use Benchmark qw{ cmpthese };
my $short = ['a' .. 'z'];
my $long = ['a' .. 'zzzzz'];
sub ar {
my $ar = shift;
my $mid = @$ar / 2 - 1;
push my @r, @$ar[ 0 .. $mid ],
'new',
@$ar[ $mid + 1 .. $#$ar ];
\@r
}
sub sp {
my @r = @{+shift};
splice @r, @r / 2, 0, 'new';
\@r
}
diag(scalar @$_) for $short, $long;
is_deeply(ar($short), sp($short), 'same short');
is_deeply(ar($long), sp($long), 'same long');
is_deeply(ar($short), [ 'a' .. 'm', 'new', 'n' .. 'z' ], 'expected sho
+rt');
cmpthese(-3, {
'ar-short' => sub { ar($short) },
'sp-short' => sub { sp($short) },
});
cmpthese(-10, {
'ar-long' => sub { ar($long) },
'sp-long' => sub { sp($long) },
});
__END__
Output:
1..3
# 26
# 12356630
ok 1 - same short
ok 2 - same long
ok 3 - expected short
Rate ar-short sp-short
ar-short 127474/s -- -21%
sp-short 160522/s 26% --
s/iter ar-long sp-long
ar-long 3.12 -- -15%
sp-long 2.64 18% --
($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord
}map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,
| [reply] [Watch: Dir/Any] [d/l] [select] |