John W. Krahn wrote:
> Bryan R Harris wrote:
>>I'd like to turn array @tmp from:
>>
>>   (1,2,3)
>>
>>to
>>
>>   (1,"|",2,"|",3)
>>
>>I'm using:
>>
>>  @tmp = split(' ', join(" | ", @tmp));
>>
>>... but it seems like a waste to create a string and then split it back up
>>again.

FYI, I ran a benchmark on the different algorithms and

splice @tmp, $_, 0, '|' for reverse 1 .. $#tmp;

is the fastest on small arrays but is the slowest on large arrays while

push @tmp, $_ ? '|' : (), shift @tmp for 0 .. $#tmp;

is second fastest on small arrays and the fastest on large arrays.

And if you want something that is really fast on small arrays then a C
style for loop is the fastest:

for ( my $i = @tmp; --$i; ) {
    splice @tmp, $i, 0, '|';
    }



John

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to