Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: Re: Re: Re: Optimizing existing Perl code (in practise)

by RMGir (Prior)
on Aug 22, 2002 at 19:00 UTC ( [id://192137]=note: print w/replies, xml ) Need Help??


in reply to Re: Re: Re: Optimizing existing Perl code (in practise)
in thread Optimizing existing Perl code (in practise)

The "shift" options is good to use when you send big data to the function! The process of the command is not fast, because it need to cut the value from the array, reorder the array, and create and save to a scalar variable! "shift" is good to use for big data because you don't leave in the memory the data 2 times!

Good point!

I'd try to avoid that by passing a reference to the large scalar to the sub instead, but if you're expecting possibly large scalar arguments by value (edit: because you need to modify them, maybe), you're right.
--
Mike

  • Comment on Re: Re: Re: Re: Optimizing existing Perl code (in practise)

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: Optimizing existing Perl code (in practise)
by gmpassos (Priest) on Aug 23, 2002 at 03:26 UTC
    "I'd try to avoid that by passing a reference to the large scalar to the sub instead"
    Better point! :)

    The reference is another good way! But is good only if you just want to past the data through the sub, because you can't read or edit it before parse the reference, and when you parse it you duplicate again the data in the memory.

    Of course that the best idea is always the simplest, why not put the variable with the "big data" in global (without 'my' or 'local'), to be read by all the program?
    K.I.S.S. -> Kip It Simple, Stupid! :-P

    "The creativity is the expression of the liberty".

      Of course that the best idea is always the simplest, why not put the variable with the "big data" in global (without 'my' or 'local'), to be read by all the program? K.I.S.S. -> Kip It Simple, Stupid! :-P

      Nope. That would actually make things more complicated, since now you have to remember that this subroutine affects that global. It tends to make things more fragile, and much harder to follow for maintainers.

      The global has no benefits whatsoever over passing data in by reference. You can modify data via a reference just as well as you can with a global...
      --
      Mike

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (5)
As of 2024-04-20 01:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found