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

在ruby中运行shell命令的最快方法是什么?,ruby,shell,optimization,Ruby,Shell,Optimization,我已经多次看到内核和系统的开销。。。它们本身可能是脚本中的瓶颈。有时有一些方法可以减少shell调用的总次数,例如使用xargs,但有时我确实需要连续多次调用shell。最快的方法是什么?我不需要任何特殊的环境变量设置或类似的设置,甚至也不需要始终使用结果代码或标准输出。请记住,运行外部进程有两种方法: 使用带有参数的systemscript,其中必须首先通过shell。 使用systemscript,使用参数,直接运行命令,绕过shell。如果旋转一个shell是昂贵的,这可能会稍微快一点,这

我已经多次看到内核和系统的开销。。。它们本身可能是脚本中的瓶颈。有时有一些方法可以减少shell调用的总次数,例如使用xargs,但有时我确实需要连续多次调用shell。最快的方法是什么?我不需要任何特殊的环境变量设置或类似的设置,甚至也不需要始终使用结果代码或标准输出。请记住,运行外部进程有两种方法:

使用带有参数的systemscript,其中必须首先通过shell。 使用systemscript,使用参数,直接运行命令,绕过shell。如果旋转一个shell是昂贵的,这可能会稍微快一点,这取决于shell的配置。 请注意,这两种情况都涉及无法避免的fork/exec循环


如果需要进行大量处理,您可能希望了解xargs如何为您工作,特别是当您可以通过输入文件/参数列表时。如果您能够以某种方式分离输出(可以是简单的,也可以是困难的),您可以从一个shell进程中获得很多好处。

请参阅,以及它们的所有链接页面。我们想知道你做了什么来研究这个问题,你试图测试/证明这个问题。简单的基准测试会告诉你答案。当然,基准测试如果我对Ruby中运行shell命令的所有不同方式都有广博的知识,我可以修改它们的调用的所有不同方式,可能会深入研究它背后的C代码,等等。@theTinMan感谢你的结束。你看到答案了吗?我不会认为用逗号分隔参数会导致系统运行有任何不同,即使我以前已经阅读过系统文档。不过,谢谢你,真有趣。看起来这两种方法的性能非常相似,但我想在涉及perf时使用后一种方法不会有什么坏处。第二种方法具有离散参数,有几个优点,但最大的优点是不会有shell漏洞或bug的风险。在第一种情况下,用户可能会发送一个恶意文件名,它只是shell脚本,或者只是格式错误的文件名,比如untitled file.txt,shell将其解析为两个参数。在第二种形式中,参数直接输入到目标可执行文件,它们不需要解释;rm-rf/远离灾难。