$s .= $_; # I believe that this line is what's slowing you down. I use TinyPerl 5.8 on Windows XP sometimes, and sometimes I use Linux Perl. I have noticed that there is a significant difference in performance between the two. I think the way Linux Perl and Windows Perl handle memory is different. (For example, I noticed that sometimes in Windows when a scalar goes out of scope, it should be cleaned up. Right? But that's not what happens. Instead, it stays in the memory until the perl script ends. Or if you say "undef $Variable" then it cleans up the memory and I can see a drop in memory usage when I'm watching Task Manager. But otherwise, it just stays there like a zombie.) In Windows, allocating memory can take a long time, and that's what you're doing there incrementally adding to the string. To avoid that, you could try reading the entire file in one operation.

Note. I haven't tested this code, but it should work:

my $file = shift @ARGV; my ($fh, $time); my $filesize = -s $file; sysopen($fh, $file, 0) or die "\nCant open file!\n"; # Open file for +reading only $time = time; my $bytes_read = sysread($fh, my $buffer, $filesize); # Read the whol +e file into $buffer close $fh; defined $bytes_read && $bytes_read == $filesize or die "\nCouldnt read + the whole file!\n"; # Do your query thing here # and see how much faster it is! printf "%f read lines from disk and do RE.\n", time - $time;

In reply to Re: RE on lines read from in-memory scalar is very slow by harangzsolt33
in thread RE on lines read from in-memory scalar is very slow by Danny

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.