Java - 优化多命令调用

标签 java performance optimization command command-line-arguments

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

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

知识
我非常熟悉 Java 中的 IO,并且之前使用过 Runtime、Process 和 ProcessBuilder 类。

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


非常感谢你的帮助。

最佳答案

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

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

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

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

关于Java - 优化多命令调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14912182/

相关文章:

java - MediaExtractor.setDataSource 抛出 IOException "failed to instantiate extractor"

java - 设置自定义 ListView 图像时出错

java - 如何从 List<> 中删除项目?

objective-c - Objective-C : Class methods vs instance methods -- efficiency difference?

javascript - 为什么一个函数在满数组时比在空数组时工作得更快

c++ - GCC 会优化掉内联访问器吗?

c++ - 是什么导致我的循环在其第一次迭代中运行得更慢?

python - python 中的 next() 真的那么快吗?

java - 如何转义 MessageFormat 模式字符串中的 { 字符?

javascript - 使用 Datatables jQuery 插件提高更新 DOM 的性能