http://www.perlmonks.org?node_id=1217259


in reply to Re^2: Any downsides to this slurp idiom?
in thread Any downsides to this slurp idiom?

That sounded plausible, but I just tried it on 5.22 with these results, using this code in my repl:

{ my $s; do{ local( @ARGV, $/)='1gb.db'; $s = <> }; <STDIN>; my $t = do{ local( @ARGV, $/)='1gb.db'; <> }; <STDIN> };;

Note how the first bump in the memory to 1.2GB remains at that level after the first burst of IO finishes,

It then climbs to 2.4GB for the second burst of IO, and then climbs again to 3.5GB immediately the IO stops.

Ie. When the temporary buffer within the do block is copied into the target scaler $t.

(Perhaps the IsCOW only operates on *nix? (I'm on win.)


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority". The enemy of (IT) success is complexity.
In the absence of evidence, opinion is indistinguishable from prejudice. Suck that fhit

Replies are listed 'Best First'.
Re^4: Any downsides to this slurp idiom?
by vr (Curate) on Jun 22, 2018 at 23:03 UTC
    >perl -wE "system(qq($^X -v));my$s=do{local(@ARGV,$/)='1GB';<>};system +('typeperf """\\Process(perl)\\Working Set Peak""" -sc 1')" This is perl 5, version 18, subversion 4 (v5.18.4) built for MSWin32-x +64-multi-thread Copyright 1987-2013, Larry Wall Perl may be copied only under the terms of either the Artistic License + or the GNU General Public License, which may be found in the Perl 5 source ki +t. Complete documentation for Perl, including FAQ lists, should be found +on this system using "man perl" or "perldoc perl". If you have access to + the Internet, point your browser at http://www.perl.org/, the Perl Home Pa +ge. "(PDH-CSV 4.0)","\\DESKTOP-P81QO3Q\Process(perl)\Working Set Peak" "06/23/2018 01:47:53.431","2192527360.000000"

    .

    >perl -wE "system(qq($^X -v));my$s=do{local(@ARGV,$/)='1GB';<>};system +('typeperf """\\Process(perl)\\Working Set Peak""" -sc 1')" This is perl 5, version 22, subversion 3 (v5.22.3) built for MSWin32-x +64-multi-thread Copyright 1987-2017, Larry Wall Perl may be copied only under the terms of either the Artistic License + or the GNU General Public License, which may be found in the Perl 5 source ki +t. Complete documentation for Perl, including FAQ lists, should be found +on this system using "man perl" or "perldoc perl". If you have access to + the Internet, point your browser at http://www.perl.org/, the Perl Home Pa +ge. "(PDH-CSV 4.0)","\\DESKTOP-P81QO3Q\Process(perl)\Working Set Peak" "06/23/2018 01:58:33.467","1099583488.000000"

      Okay. I have now reproduced your results with 5.22:

      C:\test>\perl22\bin\perl -e"my$s=do{local(@ARGV,$/)='1gb.db';<>}; prin +t `tasklist /nh /fi \"PID eq $$\"`;" perl.exe 2948 Console 1 1,218 +,828 K

      But not from my repl. It has a variety of things preloaded:

      C:\test>\perl22\bin\perl.exe \perl22\bin\p1.pl [0]{} Perl> print for keys %INC;; Time/HiRes.pm Exporter/Heavy.pm Benchmark.pm Config_heavy.pl overload.pm vars.pm threads/shared.pm Config.pm List/Util.pm warnings.pm warnings/register.pm XSLoader.pm feature.pm DynaLoader.pm strict.pm Data/Dump.pm ActivePerl/Config.pm Scalar/Util.pm C:/Perl22/site/lib/sitecustomize.pl Carp.pm Config_git.pl subs.pm Exporter.pm threads.pm overloading.pm [0]{} Perl>

      One or more of which appear to interfere with this feature, which doesn't bode well. I'll investigate further sometime.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority". The enemy of (IT) success is complexity.
      In the absence of evidence, opinion is indistinguishable from prejudice. Suck that fhit