繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM