2

質問
Javaプログラムから複数のコマンドを呼び出す最も効率的な方法は何ですか?

背景
私のチームと私は、UNIXシステム上で一連の(10万から1万、あるいはそれ以上の)コマンドを最終的に呼び出すプログラムを作成するという任務を負っています。コマンドは単純な組み込みコマンドではなく、マシンにすでにインストールされているソフトウェアの一部です。これらのコマンドはかなり作業集約的であり、パフォーマンスがソフトウェアの成功の重要な要素であるため、私はJavaから複数のコマンドを呼び出す最も効率的な方法を研究してきました。残念ながら、パフォーマンスの観点から複数のコマンドの呼び出しについて説明している投稿、質問、またはフォーラムはまだ1つも見つかりません。

知識
私はJavaのIOに非常に精通しておりRuntime、以前に、、、ProcessおよびProcessBuilderクラスを使用したことがあります。

私が探して
いるもの Javaプログラム内からの複数のコマンドの呼び出しを最適化する方法の高レベルまたは低レベル(疑似のみ、低レベルの場合はお願いします)の説明を探しています。コードをWebに投稿することはできませんが、この状況ではコードが必要であるとは思いません。簡単にするために、呼び出しているコマンドはcmd、引数を取る、で​​あると自由に想定してください-a arg0 -b arg1。コマンド文字列はプログラムの早い段階で生成され、他の呼び出しの結果に基づいて変更されないことを知っておくと役立つ場合があります。また、すべての呼び出しの結果がに追加される文字列になることを知っておくと役立つ場合がありますArrayList


手伝ってくれてどうもありがとう。

4

1 に答える 1

3

ここでの主な問題は、並行して実行できる限り多くのコマンドを並行して実行することだと思います。これにより、コマンドの管理方法の違いよりも、パフォーマンスの違いがはるかに大きくなることがよくあります。

一般的に、私はある種のスクリプトを使用し、Javaにスクリプトのインタープリターのみを直接実行させるという考えに同意します。

特に、このような状況では、パラレルメイクを使用することがあります。makefileは、実行するコマンドと、それらの間の依存関係を指定できます。たとえば、何百ものシミュレーションを実行する必要がある状況では、生のシミュレーションレポートをそれぞれシミュレーション制御ファイルに依存させ、処理されたレポートを生のレポートに依存させるルールがありました。

Parallel makeを使用すると、正常に完了したすべての作業をやり直すことなく、障害後に作業を簡単かつ効率的に再開できます。また、並列処理を妥当な数のスレッドに制限することもできます。

于 2013-02-16T16:25:26.117 に答える