如何使 Perl 的 File::Find 更快?

2024-01-21

我有一个名为Lib我正在使用 File::Find 模块在整个目录中搜索该文件夹,D:\。搜索需要很长时间,如果驱动器有很多子目录,甚至需要 5 分钟。我怎样才能更快地搜索该库,以便在几秒钟内完成?

我的代码如下所示:

    find( \&Lib_files, $dir);
    sub Lib_files
    {
       return unless -d;
      if ($_=~m/^([L|l]ib(.*))/)
      {
          print"$_";
      }
      return;
    }

在没有预先存在的索引的情况下搜索文件系统是 IO 绑定的。否则,产品范围包括locate http://unixhelp.ed.ac.uk/CGI/man-cgi?locate+1 to Windows 桌面搜索 http://www.microsoft.com/windows/products/winfamily/desktopsearch/default.mspx不会存在。

Type D:\> dir /b/s > directory.lst并观察该命令运行需要多长时间。您不应该期望在不首先索引文件的情况下击败它。

您可以做出的一项重大改进是减少打印频率。一个小的改进是,如果您不打算捕获,则不要使用捕获括号:

my @dirs;

sub Lib_files {
   return unless -d $File::Find::name; 
   if ( /^[Ll]ib/ ) {
        push @dirs, $File::Find::name;
   }
   return;
}

在我的系统上,一个简单的脚本使用File::Find与以下命令相比,打印我的主目录下包含大约 150,000 个文件的所有子目录的名称需要几分钟的时间dir %HOME% /ad/b/s > dir.lst大约 20 秒内完成。

我会倾向于使用:

use File::Basename;

my @dirs = grep { fileparse($_) =~ /^[Ll]ib/ }
           split /\n/,  `dir %HOME% /ad/b/s`;

在我的系统上,不到 15 秒就完成了。

如果有机会的话还有其他的dir.exe in %PATH%, cmd.exe是内置的dir不会被调用。您可以使用qx! cmd.exe /c dir %HOME% /ad/b/s !以确保正确dir被调用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 Perl 的 File::Find 更快? 的相关文章

  • OpenMP 共享与第一私有性能比较

    我有一个 pragma omp parallel for在类方法内循环 每个线程只读访问很少的方法局部变量 很少调用私有数据和方法的参数 所有这些都在一个声明中声明shared条款 我的问题 性能方面不应该有任何区别声明这些 变量share
  • Fortran的性能

    Fortran 的表现计算机语言基准游戏 http shootout alioth debian org 出奇的糟糕 今天的结果显示 Fortran 在两项四核测试中分别排名第 14 和第 11 在单核测试中排名第 7 和第 10 现在 我
  • 如何从 Perl 中的文本文件中提取/解析表格数据?

    我正在寻找类似的东西HTML 表格提取 http search cpan org dist HTML TableExtract 只是不适用于 HTML 输入 而是适用于包含采用缩进和间距格式化的 表格 的纯文本输入 数据可能如下所示 Her
  • 在 perl 中 \*STDIN 与 STDIN 相同吗?

    我是作者Python化者 https github com snoopyjc pythonizer我正在尝试将 CGI pm 的代码从标准 perl 库翻译为 Python 我在中遇到了这段代码从客户端读取 https metacpan o
  • 与 6 位随机字母数字代码发生冲突的概率是多少?

    我使用以下 Perl 代码生成随机字母数字字符串 仅限大写字母和数字 用作 MySQL 数据库中记录的唯一标识符 数据库的行数可能会保持在 1 000 000 行以下 但实际的绝对最大值约为 3 000 000 行 我是否有 2 条记录具有
  • 使用 Java-Large 文件查询 JSON 文件

    我正在尝试使用 java 解析下面的 JSON 文件 我需要能够 按 ID 或名称或对象中的任何字段搜索文件 也在字段中搜索空值 搜索应返回整个对象 该文件将会很大 并且搜索应该仍然很省时 id 1 name Mark Robb last
  • 如何检测FTP文件传输完成?

    我正在编写一个脚本 用于轮询 FTP 站点上的文件并在可用时将它们下载到本地 文件由各个来源方随机存放到 FTP 站点 我需要一种方法能够在下载之前检测 FTP 站点上的文件是否已被源方完全传输 关于如何解决这个问题有什么想法吗 如果您可以
  • Perl:非阻塞管道 - 只收到一条消息

    几周前我问了一个关于实现非阻塞单父多子管道的问题 mob 巧妙地回答了这个问题here https stackoverflow com questions 52723489 perl one parent many children sin
  • mclapply 用户时间大于已用时间

    我正在尝试使用mclapply的功能parallel封装在R 该函数通过计算对数似然距离将值分配给序列矩阵 这是一个 CPU 密集型操作 所结果的system time价值观令人困惑 gt system time mclapply work
  • 如何优化 R 中的 sapply 来计算数据帧上的运行总计

    我在 R 中编写了一个函数来按月份计算累积总数 但随着数据集变大 我的方法的执行时间呈指数增长 我是一名 R 程序员新手 你能帮我提高效率吗 该函数以及我调用该函数的方式 accumulate lt function recordnum d
  • getoptions 函数 perl 多值不起作用

    具有以下 getoptions 功能 iifiles 参数是可选的 如果提供的话它可以是一对多 但是当我运行此函数时收到错误消息 选项规范错误 Perl 在Solaris 10 上运行 不确定需要为iiles 提供哪些多值选项 GetOpt
  • Java 反射性能

    使用反射创建对象而不是调用类构造函数是否会导致任何显着的性能差异 是的 一点没错 通过反射查找类是 按幅度 更贵 Quoting Java关于反射的文档 http java sun com docs books tutorial refle
  • 有没有办法提高linux管道的性能?

    我正在尝试使用 64 位将超高速数据从一个应用程序传输到另一个应用程序CentOS http en wikipedia org wiki CentOS6 我使用以下方法进行了基准测试dd发现阻碍我的是管道而不是程序中的算法 我的目标是达到
  • 如何只读取文件的第一行

    我已经用谷歌搜索了一段时间 但我找不到只读取文件第一行的函数 我需要读取文本文件的第一行并从中提取日期 Perl 新手 open my file lt filename txt my firstLine lt file gt close f
  • Perl 正则表达式匹配模式的多个实例并替换

    我有一个看起来像这样的字符串 abc 1 2 3 something here foo 10 6 34 somethingelse here def 1 2 another 我想将此字符串拆分为一个数组 其中包含 abc 1 2 3 som
  • 我的 Delphi 11.1 调试器在 x64 项目上突然变得非常缓慢;大约一周前还可以。有什么想法吗?

    更新 拔掉网络 电缆和wifi 会导致 几乎 恢复正常的调试速度 已尝试禁用防火墙没有任何变化 但没有网络恢复正常服务 更新 2 所有 Windows x64 版本都存在缓慢问题 而不仅仅是单个大型项目 如果我构建并调试 32 位 Wind
  • 如何使用 Java2D 创建硬件加速图像?

    我正在尝试创建一个快速图像生成器 它可以执行大量 2d 转换和形状渲染 因此我尝试使用 BufferedImage 然后获取 Graphics2D 对象来执行所有绘图 我现在主要关心的是 make 速度非常快 所以我创建一个像这样的 Buf
  • 如何在 Perl 中找到正则表达式匹配的位置?

    我需要编写一个接收字符串和正则表达式的函数 我需要检查是否有匹配并返回匹配的开始和结束位置 正则表达式已经由qr 该函数还可能收到一个 全局 标志 然后我需要返回所有匹配的 开始 结束 对 我无法更改正则表达式 甚至无法添加 用户可能使用的
  • 如何使用资源模块来衡量函数的运行时间?

    我想使用Python代码测量函数的CPU运行时间和挂钟运行时间 此处建议资源模块 如何以 Python 代码 不是从终端 的形式分别测量函数的 CPU 运行时间和挂钟运行时间 https stackoverflow com q 192046
  • Java中精确的时间测量

    Java 提供了两种获取当前时间的方法 System nanoTime and System currentTimeMillis 第一个给出的结果以纳秒为单位 但实际精度比这要差得多 许多微秒 JVM 是否已经为每台特定机器提供了最佳的价值

随机推荐

  • x509 Go 包 - ParsePKIXPublicKey 是 DER 还是 PEM?

    我正在尝试获取 rsa PublicKey 的对象 并且执行了以下步骤 BEGIN RSA PUBLIC KEY END RSA PUBLIC KEY package main import crypto rand crypto rsa c
  • 浏览器自动填充选项与角度材质自动完成选项重叠

    在有角度的材料中 材料自动完成工作正常 但浏览器自动填充选项与材料自动完成弹出窗口重叠 如何在不关闭浏览器自动填充的情况下关闭特定应用程序的自动填充 附参考图片 它也工作
  • Django 1.8:删除迁移文件夹后未检测到迁移

    我不小心删除了 migrations 文件夹 现在 python manage py makemigrations 无法检测到我的模型中的更改 我该怎么办 shubham shubham PC Documents try ecommerce
  • 片段包接收空值

    我有两个片段 我想将数据从一个片段传递到另一个片段 该捆绑包在发送时具有第一个片段的值 但不在另一个片段中接收 以下是代码 第一个片段 public View onCreateView NonNull LayoutInflater infl
  • TomEE CDI @Inject NullPointerException

    我试图让 CDI 在我的应用程序中工作 但是当我这样做时 我只得到 NullPointerExceptions 当正常实例化 playlistService 时 它 工作得很好 但是当我尝试使用 CDI 时 它就不再工作了 服务器能够启动
  • 让 2 个不同的父实体通过 JPA 中的 @OneToMany 引用子实体

    我有一个有点奇怪的问题 我不知道JPA是否支持这个 我有一个 Entity Child和另外两个实体 Entity Parent1 and Entity Parent2 我想做的是有一个 OneToMany父母和孩子之间的关系 以及另一个
  • 使用 Google datalab 读取文件

    我正在尝试使用 Google Datalab 读取 ipython 笔记本中的文件 基本的 pd read csv 因为我找不到文件的路径 我把它放在本地 并将其上传到谷歌云存储的一个桶中 我运行了以下命令来了解我在哪里 os getcwd
  • 调用外部意图(相机)时调试器断开连接

    我正在尝试调试我的应用程序 因为从我调用相机意图到拍摄照片时发生了一些事情 并且我的应用程序在返回时强制关闭 问题是 当调用相机意图时 调试器会立即断开连接 并且我无法再调试我的应用程序 我正在设备上调试 而不是模拟器上 我在谷歌中发现了这
  • 将图像添加到 JavaFX 特定位置的按钮

    当我向按钮添加图像和文本时 默认情况下元素是水平设置的 如何更改此行为以在图像下获取文本 Set the 内容显示属性 http docs oracle com javafx 2 api javafx scene control Label
  • gitk 中“标记此提交”是什么意思?

    使用 gitk 时 可以在日志窗格中选择提交 右键单击上下文菜单会提供 标记此提交 那有什么作用 查看以下选项 返回标记 找到它的后代并标记 与标记的提交进行比较
  • iOS 8 + 交互式过渡 + 显示的导航栏 = 损坏?

    我们正在尝试在我们的应用程序中添加两个视图之间的交互式过渡 我们可以让它在 iOS 7 或 iOS 8 上正常工作不显示导航栏 但是 我们需要显示一个导航栏 为了演示我们遇到的 一些 问题 我创建了一个小型原型 屏幕截图如下所示 我尝试了
  • 限制 unserialize() 返回数组?

    有没有办法限制 PHP 的 unserialize 只解析数组 出于安全原因 假设在未序列化的对象中有一个邪恶的 unserialize 魔术方法 我不想调用 有没有办法限制 PHP 的 unserialize 只解析数组 出于安全原因 假
  • Scala Future 带有过滤器以供理解

    在下面的示例中我得到了异常java util NoSuchElementException Future filter predicate is not satisfied 我想要结果Future Test2 当检查if i 2 失败 如何
  • 如何将关系型数据库映射到OWL?

    我正在尝试将关系数据库映射到 OWL 这是我的 2 张桌子 学生 student id student name course id 课程 课程ID 课程名称 id name course id 1 Adam 5 2 Michael 2 c
  • PHP 函数以 & 符号开头是什么意思?

    我正在使用 Facebook 库 其中包含以下代码 class FacebookRestClient public function users hasAppPermission ext perm uid null return this
  • 显示:表格在 ie6 和 ie7 中不起作用 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我创建了一个菜单 但它在 ie6 和
  • XA 数据源的性能开销 - 最佳实践

    我试图了解 XA 数据源对性能的影响 在许多应用程序中 并非所有事务都需要参与分布式事务 意味着只有少数事务需要与其他资源一起分发 参与 性能权衡是否足够高 足以配置两个数据源 XA 和非 XA 各一个 同样 答案是 这取决于场景 但我正在
  • 在 Julia 中声明主函数/入口点

    是否有一种现成的或惯用的方法来声明 Julia 程序中的入口点 即相当于main在 C 或if name main 在Python中构造 这似乎是一个重要的功能 以便编写较大的结构化代码 这些代码不会在交互模式下使用 但我找不到任何关于如何
  • 如何将两个列表中的元素组合到第三个列表中?

    我有两个清单a and b a 3 6 8 65 3 b 34 2 5 3 5 c gets 3 34 6 2 8 5 65 3 3 5 是否有可能在Python中获得它们的比率 就像在变量中一样c above I tried a b并得到
  • 如何使 Perl 的 File::Find 更快?

    我有一个名为Lib我正在使用 File Find 模块在整个目录中搜索该文件夹 D 搜索需要很长时间 如果驱动器有很多子目录 甚至需要 5 分钟 我怎样才能更快地搜索该库 以便在几秒钟内完成 我的代码如下所示 find Lib files