[Moscow.pm] Почему память не используется повторно?

Ivan B. Serezhkin ivan на serezhkin.com
Пн Дек 17 07:16:34 PST 2007


Привет.
Alex Kapranoff wrote:
> Скопы по умолчанию предполагают, что будут выполняться не один раз. И
> поэтому "кэшируют" аллокацию как дорогую операцию. По-моему так.
>   
Во тут совсем опровержение.
я не думаю, что eval string кто то может подозревать в многократном 
выполнении =)

#!/usr/bin/perl

use strict;
use URI;
use Data::Dumper;
use Devel::Peek;


sub printmysize {
    our $iter;
    $iter++;
    print "$iter : ".`ps awuxp $$`;
}

printmysize();

print "=== Same Scope ===\n";
for (1..5) {
    my $aaa = '1' x (10 * 1024);
    $aaa x= 1024;
    printmysize();
}


print "=== eval block ===\n";
eval  {
    my $aaa = '1' x (10 * 1024);
    $aaa x= 1024;
    printmysize();
} for (1..5);

print "=== eval string ===\n";
eval <<'EOF' for (1..5);
my $aaa = '1' x (10 * 1024);
$aaa x= 1024;
printmysize();
EOF


-- 
Ivan B. Serezhkin



Подробная информация о списке рассылки Moscow-pm