in reply to RE on lines read from in-memory scalar is very slow
Note, that when I just loop through the lines without doing the RE the disk and in-memory files take about the same amount of time, so it seems it is the RE that is causing the problem.
That suggests to me that the data seen in the first and second loops are not the same. If you put a counter in the loops, do they both see the same number of lines?
In particular if you are running this on Windows, I believe it may do some automatic conversion of CRLF line endings on read, in which case building up $s in this way may result in something that would read the whole in-memory file as a single line.
You might try the following approach to set up the in-memory file, which would be more efficient and may be more certain to give the same content:
seek $fh, 0, 0; my $s = do { local $/; <$fh>; };
This reads the full content of the file in one go, rather than reading it line by line and then appending. (See also what's faster than .= for more detail on why building up a string piecewise can be really inefficient.)
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: RE on lines read from in-memory scalar is very slow
by ikegami (Patriarch) on Jan 23, 2024 at 00:48 UTC | |
|
Re^2: RE on lines read from in-memory scalar is very slow
by Danny (Chaplain) on Jan 23, 2024 at 01:30 UTC | |
|
Re^2: RE on lines read from in-memory scalar is very slow (cygwin and \n)
by LanX (Saint) on Jan 23, 2024 at 13:06 UTC | |
by kcott (Archbishop) on Jan 24, 2024 at 16:04 UTC | |
by LanX (Saint) on Jan 24, 2024 at 21:40 UTC |