Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: Re: Re: Re: Optimizing the bejeezus out of a sub

by ant9000 (Monk)
on Jun 25, 2003 at 08:33 UTC ( [id://268784]=note: print w/replies, xml ) Need Help??


in reply to Re: Re: Re: Optimizing the bejeezus out of a sub
in thread Optimizing the bejeezus out of a sub

As you say, you are generating a system call (plus memory copy from user to kernel space) for every iteration: that might be a small penalty, but incurs 130,000 times... doing it just once saves some bit work, hence the (small) performance increase.
OTOH, if your strings get extremely big you are probably going to lose this benefit, since buffering in your sub is likely to cause a lot of work for memory allocation.
  • Comment on Re: Re: Re: Re: Optimizing the bejeezus out of a sub

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: Optimizing the bejeezus out of a sub
by sgifford (Prior) on Jun 25, 2003 at 16:50 UTC
    The print is buffered, so only generates a system call when the buffer is full. My template is small and the buffer size is larger than it, so I only have one system call for the entire template.
    #!/usr/bin/perl for(my $i=0;$i<4000;$i++) { print $i%10; }
    $ strace -c -e write /tmp/t20 >/tmp/out
    % time     seconds  usecs/call     calls    errors syscall
    ------ ----------- ----------- --------- --------- ----------------
    100.00    0.000034          34         1           write
    ------ ----------- ----------- --------- --------- ----------------
    100.00    0.000034                     1           total
    

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (5)
As of 2024-04-19 04:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found