Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re: Re: Processing arrays 2 elements at a time (TIMTOWTDI)

by ichimunki (Priest)
on Aug 02, 2002 at 19:38 UTC ( [id://187189]=note: print w/replies, xml ) Need Help??


in reply to Re: Processing arrays 2 elements at a time (TIMTOWTDI)
in thread Processing arrays 2 elements at a time (TIMTOWTDI)

So don't make your copy first. It's a reference after all, which in this case makes life easy.
my @copy; while (@$r) { push @copy, [ shift @$r, shift @$r ]; } $r = \@copy;
This way we build our new array (while the one gets bigger, the other gets smaller), then we simply change what the reference points to.

Replies are listed 'Best First'.
Re: Re: Re: Processing arrays 2 elements at a time (TIMTOWTDI)
by petral (Curate) on Aug 02, 2002 at 21:50 UTC
    That's very neat.   My only point was that the way grinder was presenting it (non-destructive of the original array), it would probably not be the fastest if the array copy was not hidden in the overhead for the subroutine call.

      p
      I'm sorry. I guess I thought his requirements didn't preclude a destructive routine, since he opens with $r = [1,2,3,4,5,6] and wants to replace that with $r = [[1,2],[3,4],[5,6]] and both the shifter and splicer techniques in the benchmark are destructive. My money's on the c-loop for non-destructive, and if I had large tuples or frequently changing tuple lengths, I'd use splicer in spite of the speed hit shown here.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://187189]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others browsing the Monastery: (2)
As of 2024-04-20 03:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found