网络目录上的 perl readdir() - 标量与列表上下文和网络性能
Posted
技术标签:
【中文标题】网络目录上的 perl readdir() - 标量与列表上下文和网络性能【英文标题】:perl readdir() on network directory - scalar vs list context and network performance 【发布时间】:2011-01-17 14:56:40 【问题描述】:我们有一个包含大量文件的网络共享,并且将通过 perl readdir() 遍历所有文件。网络通信哪个更有效(或者它们是否相同)? 1)列表上下文中的readdir? 2) 标量上下文中的 readdir?
通常我会避免使用列表上下文以避免将整个列表存储在内存中,但如果它要在列表上下文中访问共享一次并且在标量上下文中多次访问,那么我宁愿使用列表上下文。
谢谢! -彼得
【问题讨论】:
【参考方案1】:以下是一些用于测试差异的代码:
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
版本。
【讨论】:
以上是关于网络目录上的 perl readdir() - 标量与列表上下文和网络性能的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法通过 SSH/SFTP 进行 opendir()、readdir() 类型的调用?