10

データベースから大量の入力データを読み取り、それを操作してから、データを別のデータベースに書き戻すJavaプログラムがあります(新しいWindows 7マシンでODBCドライバー、Excelおよびアクセスデータベースを使用)。このプログラムは、Eclipse から実行するのに約 17 分かかりますが、実行可能な .jar ファイルを作成すると、実行にさらに 10 分かかります (合計 27 分)。

遅い jar ファイルについてこれまでに見つけた 2 つの理由 (SO と google を検索して) は、ファイルが圧縮されていることと、Eclipse のコンソールよりもコマンド プロンプト (またはエラー ログ) への書き込みに時間がかかることです。圧縮されていない jar ファイルを作成しようとしましたが、約 10 秒しか高速化されませんでした (実行時間はとにかく約 30 秒変化するため、完全にランダムである可能性があります)。プログラムには約 10 個System.out.println()のコマンドしかないので、それほど遅くなることはありません。

実行速度が非常に遅くなる原因についてのアイデアはありますか?また、速度を上げる方法があれば教えてください。私が含める必要がある関連する可能性のある他の詳細がある場合はお知らせください。ありがとう!

4

5 に答える 5

11

私の場合、アプリケーションを Eclipse で実行するのに 3 秒かかりましたが、jar から実行すると 2 分かかりました。
私の間違いは"Package required libraries into jar"、プロジェクトを実行可能な jar にエクスポートするときに選択することでした。

時間を短縮するためにさまざまな方法を試しましたが、何も役に立ちませんでした..

プロジェクトに他の Maven 依存関係または jar ファイルがある場合は"**Extract required libraries into generated jar**"、プロジェクトを jar にエクスポートする際に 使用する必要があります。

これにより、問題は数秒で解決され、Eclipse ファイルと jar ファイルの両方で、アプリケーションの実行に同じ時間、2 秒かかっています。

これが新しい闘争者に役立つことを願っています。

よろしく。

于 2015-10-23T01:55:18.537 に答える
4

JAMonを使用します。これは、コードの実行時間を測定するのに役立つ監視ライブラリです。

メソッドに監視コードを追加したら、それを Eclipse で JAR ファイルとして実行し、結果を比較します。これにより、検索を絞り込むことができます。

また、Eclipse が使用するのと同じ Java バージョンで JAR ファイルを実行しているかどうかを確認してください (たとえば、Java 1.4.x は 1.6.x よりもはるかに遅い場合があります)。

于 2012-06-06T18:12:42.930 に答える
4

同様の問題がありました。シェルの実行速度は桁違いに遅く、コンソール出力とは何の関係もありませんでした。JVMメモリ値を設定しようとしましたが、違いはありませんでした

解決策は、[Runnable JAR File Export] ウィザードの [Copy required libraries into a subfolder next to the generated JAR] オプションを使用して、すべての JAR を含む ANT ファイルを外部フォルダーにパッケージ化することでした。次に、メイン JAR を -cp [YOURSUBFOLDER] コマンド ライン オプションで実行します。

于 2017-01-04T17:17:38.067 に答える
1

Java VMパラメータ(使用されているGC、最大メモリなど)を確認できます。データ集約型のアプリケーションの場合、GCは処理速度を大幅に低下させる可能性があります。

于 2012-08-27T11:44:52.000 に答える
0

はい、同じ問題があります。私は実験して解決策を得ました!

jarファイルを作成するときに、「必要なライブラリをjarにパッケージ化」を選択するだけです。この解決策は私にはうまくいきました。これがあなたにとってもうまくいくことを願っています。

于 2020-09-01T16:16:20.367 に答える