【问题标题】:Memory usage perl function内存使用 perl 函数
【发布时间】:2016-03-07 11:22:41
【问题描述】:

这两种将变量传递给子例程的方式在内存和/或磁盘使用方面存在任何差异:

&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'};
}

谢谢!

【问题讨论】:

    标签: perl


    【解决方案1】:

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

    不过,真正复制哈希会消耗更多内存:

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

    【讨论】:

      猜你喜欢
      • 2011-09-20
      • 2015-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-13
      • 1970-01-01
      相关资源
      最近更新 更多