Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re: cat vs. file handle speed?

by Adam (Vicar)
on Mar 30, 2001 at 06:06 UTC ( #68263=note: print w/ replies, xml ) Need Help??


in reply to cat vs. file handle speed?

Think about the overhead involved. Here is my brief analysis:

open(INFILE,"cat textfile |") while(<INFILE>) {...}
This opens a type of file handle commonly known as a pipe. It spawns an additional process, complete with a duplicate set of environment variables and memory management requirements. The OS must now swap memory back and forth between Perl and cat.
open(INFILE,"textfile") while(<INFILE>) {...}
Perl opens a file handle directly to the file. No other processes are started.
system("cat textfile | filter.pl")
Perl invokes the shell which invokes cat and another instance of Perl! Plus the shell still has to open a file handle for the output of cat / the input to filter.pl

Result: All three methods require a filehandle (aka a fileno, or a file descriptor) and two of the methods have the additional overhead of multiple processes. Use the second method and avoid all that.


Comment on Re: cat vs. file handle speed?
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (8)
As of 2015-07-02 21:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (45 votes), past polls