http://www.perlmonks.org?node_id=1148241


in reply to Re: How do I insert an element into an arbitrary (in range) array index?
in thread How do I insert an element into an arbitrary (in range) array index?

What issues?
#!/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,