Eclipseは私のJavaプログラムを6倍速く実行します…使用せずにこのパフォーマンスを達成できますか?


8

与えられた文字と長さに基づいてすべての反復的な順列を生成するJavaプログラムを作成しました。

Eclipseでコードを実行すると、わずか15秒で1,000,000の順列を持つファイルが生成されます。それでも、「java permutation」を使用してコマンドプロンプトで同じマシンでプログラムを実行すると、同じ1M順列を生成するのに1分35秒かかります。

どうしてこれなの?とにかく私は日食を使わずにこのタイプのパフォーマンスを得ることができますか?

編集:Java VisualVMの結果を追加

www.craftboom.co.uk/jvm.png-日食で実行すると、CPU使用率が高くなります。シェルo_OでCPUとメモリの両方の使用量が0に低下することがある

EDIT2:画面への印刷に問題があることがわかりました。元の投稿では触れていませんでしたが、プログラムは各順列をコンソールに出力します。コメント化してファイルに保存しました。シェルと日食の両方で同じくらい高速に実行されます :-)

返信ありがとうございます。


3
Eclipseが遅くなるべきではありませんか?
動的な

1
日食の外でプログラムを起動する方法を教えていただけますか?
Winston Ewert 2012年

1
私は単に.batファイルを使用して起動します。@ echo off java permutations
Lambert

2
両方の起動で同じランタイム環境を使用していることを確認してください。Eclipseが使用しているものを見つけて、コマンドライン起動時に-vmパラメーターとして指定します。ランタイム環境起動がで構成されている場合、Eclipseは、あなたが(おそらくJREタブで「Javaアプリケーション」と表情の下で使用するものを選択し、「実行- >実行構成...」を使用します。
オザン・

回答:


9

実行時間が長い場合は、メモリの問題を示しています。ディスクにスワップするか、Eclipse内よりもガベージコレクションが多くなります(ヒープが小さいため)。

プロファイラーを使用して実行し、時間が費やされている場所を確認します。Javaの場合、JDKのjvisualvmから始めます。


私はjvisualvmを実行しました。これは、プログラムがシェルまたはEclipseで20MBを超えるヒープサイズを使用しないことを示しています。
ランバート

ここに私の結果を追加しました:craftboom.co.uk/jvm.png Eclipse で実行すると、CPU使用率が高くなるようです。シェルでCPUとメモリの使用率が時々0に低下するように見えるo_O
Lambert

それは私がコンソールに各順列を出力していたからでした。問題は解決しました。回答ありがとうございます
ランバート

だから問題はあなたのコンソールの遅さでした。タイミングをとるときは常にコンソール出力を無視してください。

7

インストールのeclipse.iniの設定を確認します(JVM設定が含まれます)。プログラムを実行するときよりも、JVMをより効率的に使用するように構成している可能性があります。

http://wiki.eclipse.org/Eclipse.ini

http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html


返信をありがとう、しかし、私は日食のために与えられた同じ引数で私のプログラムを起動しようとしました。それでも同じ結果:/
ランバート
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.