in reply to Re^2: RE on lines read from in-memory scalar is very slow
in thread RE on lines read from in-memory scalar is very slow

"(I've noticed on other occasions that making one of my APIs handle-friendly by wrapping optional plain scalars with a file handle and then writing the body of the code to read from handles has introduced a performance hit vs. writing the code to split /\n/ and process the strings directly. It would be really cool if they performed equally)"
Can you make a new thread explaining this? I don't understand.
  • Comment on Re^3: RE on lines read from in-memory scalar is very slow

Replies are listed 'Best First'.
Re^4: RE on lines read from in-memory scalar is very slow
by NERDVANA (Priest) on Feb 20, 2024 at 22:03 UTC
    I'm just saying that I've run into cases where
    for (split /\n/, $longstring) { ... }

    ran faster than

    open my $fh, '<', \$longstring; while (<$fh>) { .... }

    In a perfect world, they would run the same speed (or at least really close). The second one is preferred any time there's a case that you want to run it on a huge file and don't want to load $longstring all into memory at once. The second code solves both cases, but if a majority of your cases are to have it already loaded in memory, then maybe you want to write it the first way for performance.

    (If I made a top-level post out of this I'd want to do all the benchmarks and different perl versions, and I'd end up researching the Perl source code and all that, which I don't have time for right now)