Many of the CGI applications I have worked on
spend a *lot* of time on print
statements. On my machine, this code:
my $out='';
for (0..1000)
{
$out .= "$_"." bottles of beer on the wall\n";
}
print $out;
is about six times faster than:
for (0..1000)
{
print "$_"," bottles of beer on the wall\n";
}
Changing all the code to look this way is probably
too much trouble. So here's an idea that is only three times faster than print:
package Print;
require Exporter;
@ISA = qw(Exporter);
@EXPORT_OK = qw(Print);
our $sout='';
sub Print
{
$sout .= "@_";
}
END
{
print $sout;
}
1;
Then change your code to call
Print
instead of
print.
This is a small change that can be applied in a batch
fashion to all of your slow code to speed it up.
use Print qw (Print);
for (0..1000)
{
Print "$_"," bottles of beer on the wall\n";
}
This hasn't been through a lot of testing, I just
wrote it.
It is good practice to create some output
for the user to look at early in your program, then
buffer up the rest of the output that is slow
to generate.
It should work perfectly the first time! - toma
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.