网络目录上的perl readdir() - 标量与列表上下文和网络性能

时间:2011-01-17 14:56:41

标签: perl network-programming performance

我们有一个包含大量文件的网络共享,并将通过perl readdir()迭代所有文件。哪种网络通信效率更高(或者它们是否相同)? 1)列表上下文中的readdir? 2)标量上下文中的readdir?

通常我会避免列表上下文以避免必须将整个列表存储在内存中,但如果它将在列表上下文中一次点击共享,而在标量上下文中多次,那么我宁愿选择列表上下文。

谢谢! -Peter

1 个答案:

答案 0 :(得分:3)

下面是一些用来衡量差异的代码:

use Benchmark;

my $dir_name = 'a network path';
timethese(-2, {
    scalar => sub {
        opendir(my $dir, $dir_name);
        while(my $entry = readdir($dir)) {
        }
    },
    list => sub {
        opendir(my $dir, $dir_name);
        my @entries = readdir($dir);
    },
});

我的机器/网络(WinXP和远程共享)上的结果非常相似,但有点赞成scalar版本。