1

VmWare ホストに情報を照会する powerCLI スクリプトがあります。これを行うことで、Javaからスクリプトを実行できます。

Runtime runtime = Runtime.getRuntime();
String cmd = "powershell -ExecutionPolicy RemoteSigned -noprofile -noninteractive -file \"" + scriptPath + "\"";
Process proc = runtime.exec(cmd);

Powershell コマンド ラインまたは Java から実行した場合に、スクリプトが同じように機能することを確認しました。ただし、Java から呼び出すと、完了するまでに約 45 秒かかることに繰り返し気付きました (コマンド ラインからは約 20 秒)。

パフォーマンスの違いの理由は何ですか?ありがとうございました

編集:明確にするために:私のpowerCLIスクリプトでは、開始時刻と終了時刻をキャプチャし、スクリプト内から期間を出力します。言及された 45 秒対 20 秒は、Powershell スクリプトの出力から観察されました。したがって、この時間には、呼び出しと戻りに関連するオーバーヘッドは含まれません。

4

2 に答える 2

0

そこにはさらに多くのことが起こっています。ランタイムのインスタンスを取得し、PowerShellを実行してスクリプトを渡し、ランタイムにコールバックして、プログラムの実行が終了したことを通知する必要があります。

そのちょうどJavaのオーバーヘッド。

于 2012-11-12T06:33:09.150 に答える
0

PowerCLI スナップインはどのようにロードしますか? Windows InternetSettings には、スナップインのオリジンを検証するいくつかの最適化があります。これをオフにすることができます。Javaがこれらの設定をどのように考慮しているか(またはまったく考慮していないか)はわかりません。この記事http://goo.gl/PGUqaを読んで、そこで説明を試してください。

于 2012-11-23T09:31:53.297 に答える