在 ruby 中运行 shell 命令的最快方法是什么?

迈塞尔

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

塔德曼

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

  1. 随着system("script with arguments")地方是必须先经过外壳。
  2. system("script", "with", "arguments")其中命令被直接运行,绕过外壳。如果旋转外壳很昂贵,这可能会稍微快一点,这可能取决于外壳的配置。

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章