我们有一个包含大量文件的网络共享,并将通过perl readdir()迭代所有文件。哪种网络通信效率更高(或者它们是否相同)? 1)列表上下文中的readdir? 2)标量上下文中的readdir?
通常我会避免列表上下文以避免必须将整个列表存储在内存中,但如果它将在列表上下文中一次点击共享,而在标量上下文中多次,那么我宁愿选择列表上下文。
谢谢! -Peter
答案 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
版本。