【发布时间】:2013-02-01 11:02:16
【问题描述】:
问题
从 Java 程序调用多个命令的最有效方法是什么?
背景
我和我的团队的任务是创建一个程序,该程序最终在 UNIX 系统上调用一系列(从一百到一万,甚至更多)命令。这些命令不是简单的内置命令,而是已经安装在机器上的软件的一部分。因为这些命令工作量很大,而性能是我们软件成功的关键因素,所以我一直在研究从 Java 调用多个命令的最有效方法。不幸的是,我还没有找到一个从性能角度讨论调用多个命令的帖子、问题或论坛。
知识
我对 Java 中的 IO 非常熟悉,之前使用过 Runtime、Process 和 ProcessBuilder 类。
我在寻找什么
我正在寻找关于如何最好地优化从 Java 程序中调用多个命令的高级或低级(仅伪,如果是低级,请)解释。我无法在网络上发布我们的代码,但我不认为在这种情况下我们的代码是必要的。为方便起见,随意假设我们调用的命令是cmd,它接受参数-a arg0 -b arg1。知道命令字符串是在程序的早期生成的,并且不会根据其他调用的结果而更改,这可能会有所帮助。知道所有调用的结果将是要添加到ArrayList 的字符串也可能会有所帮助。
非常感谢你的帮助。
【问题讨论】:
-
命令是指单独的可执行文件?
-
是的,我们调用的软件是ImageMagick,但是我们不能使用他们的Java库
-
请明确您对控制的需求:每个命令都应该被控制,或者脚本文件(bash)中的一批命令可能是一个解决方案?
-
@Aubin - 如果“受控”是指被调用的其他命令取决于先前命令的结果,而“批量命令”是指预编译列表要调用的命令,那么答案是后者(命令批处理)
-
为什么不使用 shell 脚本?命令本身(即图像处理)将花费时间,并且启动它们的方式不会有太大变化(如果有的话)。
标签: java performance optimization command command-line-arguments