[英]perl readdir() on network directory - scalar vs list context and network performance
我们拥有包含大量文件的网络共享,并将通过perl readdir()遍历所有文件。 使用网络通信哪个效率更高(或者它们相同)? 1)在列表上下文中的readdir? 2)在标量上下文中的readdir?
通常,我会避免使用列表上下文,以避免将整个列表存储在内存中,但是如果要在列表上下文中一次击中共享,而在标量上下文中多次击中共享,那么我宁愿使用列表上下文。
谢谢! -Peter
以下是一些基准测试差异的代码:
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
版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.