4

ローカルシステムから暗号化されたファイルを読み取り、いくつかの処理を行うJavaプログラムを作成しました。実際には20個のファイルを読み取る必要があるため、スレッドメカニズムを使用してプログラムの実行を高速化しました。

Eclipseでプログラムを実行すると、実行が完了するまでに30分以上かかりますが、実行可能なjarを作成し、コマンドプロンプトを使用してプログラムを実行すると、1分もかかりません。

Eclipseでプログラムを実行すると、コマンドプロンプトで実行するよりも時間がかかるのはなぜですか?

4

5 に答える 5

8

キャプチャするEclipseのコンソールビューは、コマンドラインSystem.outの通常のビューと比較して遅いことで有名です。stdoutプログラムで多くの印刷が行われている場合は常に、Eclipseからのプログラムの実行速度が大幅に低下することが予想されます。

ただし、とにかく、Unixパイプを介して他のプログラムと統合するように設計されたプログラムを作成している場合を除き、コマンドラインでもパフォーマンスが低下するため、印刷を最小限に抑える必要があります。

于 2012-10-09T14:44:07.533 に答える
1

いくつかの典型的な間違いがあります:

  • プログラムをデバッグモードで実行している可能性があります。

    デバッグ(緑色のバグ)の代わりに実行(緑色の円の中に記号を再生)を使用してみてください

  • 別のJVMでプログラムを実行している可能性があります

    を見てProject Properties->Java compilerWindow->Preferences->Java->CompilerそしてWindow->Preferences->Java->Installed JREs

  • Eclipse JDTのJavaコンソールとの出力および入力の相互作用は、標準のコンソールとはパフォーマンスが異なります。

于 2012-10-09T14:41:10.077 に答える
0

特に条件付きブレークポイントを使用する場合、デバッグでは実際に測定可能な違いがあるため、デバッグではなくEclipseで実行アクションを使用するようにしてください。

ただし、デバッグの使用によって生じる大きな違いはそれほど大きくないことを覚えています。

于 2012-10-09T14:34:02.310 に答える
0

私はあなたのために実験をしたばかりで、それほど大きな違いは見られませんでした。時間を計算するクラスを作成しましsin() 100000000た。このプログラムは、日食の下で最大15秒、コマンドプロンプトを介して最大14秒実行されました。

それで、これが私の頭のてっぺんに見ることができるあなたのシステムの遅い理由です:

  1. デバッグ中を実行していないことを確認してください。デバッグではなく、実行オプションを使用します。
  2. 日食の下でいくつかのカバレッジ/監視開発者ツールを持っていないことを確認してください。たとえば、YourKit、Emmaなど。
  3. プログラムがコンソールに重要な印刷を生成しないことを確認してください。
  4. 日食の下で実行するときに十分なヒープメモリがあることを確認してください
于 2012-10-09T14:40:55.367 に答える
0

jdk6をjdk7に変更することは私にとって完璧に機能しました。ウィンドウ->設定->Java->インストールされたJRE

于 2015-03-24T18:46:34.170 に答える