2

问题
从 Java 程序调用多个命令的最有效方法是什么?

背景
我和我的团队的任务是创建一个程序,该程序最终在 UNIX 系统上调用一系列(从一百到一万,甚至更多)命令。这些命令不是简单的内置命令,而是已经安装在机器上的软件的一部分。因为这些命令相当耗费工作,而性能是我们软件成功的关键因素,所以我一直在研究从 Java 调用多个命令的最有效方法。不幸的是,我还没有找到一个从性能角度讨论调用多个命令的帖子、问题或论坛。

知识
我对Java中的IO非常熟悉,并且之前使用过Runtime,,ProcessProcessBuilder类。

我在寻找什么我正在寻找关于
如何最好地优化 Java 程序中多个命令的调用的高级或低级(仅限伪,如果是低级,请提供)解释。我无法在网络上发布我们的代码,但我不认为在这种情况下我们的代码是必要的。为方便起见,请随意假设我们调用的命令是cmd,它接受 arguments -a arg0 -b arg1。知道命令字符串是在程序的早期生成的,并且不会根据其他调用的结果而更改,这可能会有所帮助。知道所有调用的结果将是要添加到ArrayList.


非常感谢你的帮助。

4

1 回答 1

3

我认为这里的主要问题是并行运行尽可能多的命令,这些命令可以有效地并行运行。这通常会比命令管理方式的任何差异在性能上产生更大的差异。

一般来说,我同意使用某种脚本并让 Java 直接运行仅脚本的解释器的想法。

特别是在这种情况下,我有时会使用并行 make。makefile 可以指定要运行的命令,以及它们之间的任何依赖关系。例如,在我需要进行数百次模拟的情况下,我的规则使原始模拟报告每个都依赖于模拟控制文件,而处理后的报告则依赖于原始报告。

Parallel make 可以在失败后轻松高效地恢复工作,而无需重做所有已成功完成的工作。它还可以管理将并行性限制为合理数量的线程。

于 2013-02-16T16:25:26.117 回答