内存使用perl函数

时间:2016-03-07 11:22:41

标签: perl

在将这些变量传递给子程序的两种方式之间,与内存和/或磁盘使用有任何区别:

&subrutine_1($hash_reference);

sub subrutine
{
    my $hash = $_[0];
    my $var_1 = $$hash{'var_1'};
    my $var_2 = $$hash{'var_2'};
    my $var_3 = $$hash{'var_3'};
}

&subrutine_1($hash_reference);

sub subrutine
{
    my $var_1 = $_[0]{'var_1'};
    my $var_2 = $_[0]{'var_2'};
    my $var_3 = $_[0]{'var_3'};
}

谢谢!

1 个答案:

答案 0 :(得分:1)

磁盘使用情况应该相同,因为没有I / O操作。在第一种情况下,内存消耗会更大,因为您需要一个标量变量$ hash。它只会存储一个引用,因此差异很小。

实际上复制哈希会消耗更多内存,但是:

sub subroutine {
    my %hash = %{ $_[0] };
    my $var_1 = $hash{var_1};
    # ...
}