Nat*_*enn 3 c perl internals subroutine
我刚刚从Gabor Szabo 阅读这篇文章,他指出Devel :: Size报告说一个简单sub {}的报告需要8,516字节的空间.报告的尺寸是否正确?如果是这样,为什么Perl需要为一个空子程序分配这么多空间?
$ perl -MDevel::Size=total_size -E'
my $s = "x" x 100_000;
my $x = \$s;
my $y = \$s;
say total_size($x);
say total_size($y);
'
100048
100048
Run Code Online (Sandbox Code Playgroud)
这是否意味着大小$x和$y组合是200KB?不,这里的想法相同.
它不是sub的大小,而是引用的大小,以及它引用的所有内容,直接和间接.
$ perl -MDevel::Size=total_size -E'
sub f { } say total_size(\&f);
${"xxx"}=1; say total_size(\&f);
${"yyy"}=1; say total_size(\&f);
'
5847
5908
5969
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,这不仅仅是测量.似乎有一个指向sub的命名空间的指针.