首页 > 解决方案 > 在 ruby​​ 中运行 shell 命令的最快方法是什么?

问题描述

我已经多次看到 Kernel#` 的开销及其system(...)本身可能成为脚本的瓶颈。有时有一些方法可以减少 shell 调用的总次数,例如 with xargs,但有时我确实需要连续多次调用 shell。最快的方法是什么?(我不需要任何特殊的环境变量设置或类似的东西,甚至不需要结果代码或标准输出)

标签: rubyshelloptimization

解决方案


请记住,有两种方法可以运行外部进程:

  1. system("script with arguments")哪里必须首先通过外壳。
  2. system("script", "with", "arguments")直接运行命令的地方,绕过shell 。如果启动 shell 的成本很高,这可能会稍微快一些,这可能取决于 shell 的配置。

请注意,这两者都涉及无法避免的fork/循环。exec

如果您需要进行大量处理,您可能需要研究如何xargs为您工作,尤其是当您可以通过Open3. 如果你能以某种方式分离输出,这可能是简单的,也可能是困难的,你可以从一个 shell 进程中获得很多好处。


推荐阅读