2011-07-16 2 views
6

これは愚かな疑問に思えるかもしれませんが、stackoverflowに関する質問や他の人の質問を参照した後、プロファイラを使用して、コードの実行速度が遅いなどプロファイラを使用する方法を知る必要がある/どちらを使うか

プログラミングの初心者であるため、私はこのすべてに慣れていますが、私はより大きなプロジェクトを作成しているので、このツールは非常に有用であると感じています回。唯一のことは、私はそれらをどのように使用するのか分かりません。

通常、JDeveloperを使用してJavaでコード化していますが、インターネットには1つのビルトインがあります。私はそれを使用しようとしましたが、私はどの部分が私のプログラムを遅くする部分を見つけることができなかったので、私は本当にどのように知っていないと思います。私はそれを使う方法がわからないか、それがうまくいかないと分かっているからか分からないので、私はここから始めなければならないものを見て欲しいと思った。

Eclipseをインストールして使用する方法を知っています(私はPythonをコーディングしているとき、またはAndroid開発用のチュートリアルを試しているときにEclipseを使用しています)。無料のプロファイラがあればそれらの2つのIDEのどちらか、私は本当にそれについて知りたいです。また、私がプロファイラーについて知る必要があるチュートリアルや基本的なことは、私には大いに役立ちます。

ご質問ありがとうございます。私の質問はプログラミングに関するものではありませんが、これはプロファイラに関する貴重な情報を得るのに最適な場所のようです。

答えて

3

あなたが混乱している場合は、so are most of the profiler vendorsです。

最初に理解しなければならないのは、プログラムの遅さが遅い(ボトルネック)ためです。 彼らはそれ以上のことをするために時間がかかります。彼らには時間がかかる。

これは競馬のようなものです。 ボトルネックは、馬が積み重ねて減速しなければならないトラックの狭い場所になります。 時間の浪費は、馬がさまよって余分な距離を移動しなければならない、最初のものと融合した別のトラックのようなものです。 それと別のトラックが融合している可能性があります。

避けることができる関数呼び出しは、時間がかかるという例です。

Here's how I find time drains.これは単純で言語に依存しません。 jStackのような簡単なツールでも実行できます。

プロファイラメーカーはよく意味はありますが、混乱する概念がたくさんあります。

「時間が費やされている場所」など。これが意味するものが「プログラムカウンタが最も頻繁に見つかる場所」である場合、それは間違った競馬場にある馬のようなものです。 あなたはそのレーストラックを短縮しようとすることができますが、本当の問題は馬がそこにいてはいけないということです。つまり、回避すべきであった関数呼び出しがあります。

「測定の統計精度」など。馬が間違ったレーストラックにあることを知るために間違ったレーストラックを回るのにかかる時間を測定する必要がありますか? いいえ、スナップショット(スタックサンプル)を取るだけです。 それが間違った競馬場に長く来るほど、あなたはそれを見る可能性が高くなります。 2回目に表示されている場合は、問題の内容を知っています。

「CPUプロファイラ」と呼ばれることは、I/O時間を無視する言い訳です。 あなたが気付いていなかった不要なI/Oが時間切れになることがあります。 これは、オートムギの袋にぶら下がっている馬のようなものです。 馬が走っている間だけスナップショットを撮ることができるのであれば、は決してに気付かないでしょう。 あなたは、時間が疑わしいほど長いことに気づくでしょう。あなたは[最新版]をダウンロードすることもできますので、more where those came fromあります

...

+0

あなたが投稿したリンクは非常に興味深いものです。私はあなたが提案したものを適用しようとし、私はそれが将来トンを助けることになるだろうと確信しています。どうもありがとう! –

3

フリーツールをお探しの場合は、jvisulavmが最適です。これには標準のJDKインストールが付属しています。実行可能ファイルは、通常、java、javac、javadoc、およびそれらの兄弟の横のJAVA_HOMEのbinディレクトリの下にあります。ここではチュートリアルです:

http://download.oracle.com/javase/6/docs/technotes/guides/visualvm/index.html

あなたは、より高度な商品YourKitjprofilerを探している場合は、両方の興味深いされています。

+1

VisualVMのは、もっと定期的にJDKよりリリース(http://visualvm.java.net/download.html)。 –

1

プロファイラを使用するのは簡単な作業ではなく、VM内部について多くの背景知識が必要です。だから、メモリ管理、ホットスポットなどについて読むことから始めることが最善です。いくつかのまともなヘルプは、プロファイラのヘルプページにあります。たとえば、help for JProfilerを参照してください。

私の経験では、他の手段では追跡できない重大なパフォーマンス上の問題が発生した場合、プロファイラーを数回使用するだけでした。多くの場合、ログのタイムスタンプなどの単純なものは、パフォーマンスの問題を解決するのに役立ちます。したがって、最後の手段としてプロファイラを使用してください。それは、人々が定期的にそれを使用するケースを聞いたことです。私はそれについてしかし、私のために働くためにこのプロセスを得ることができなかった。

私を満足させる無料のプロファイラは見つかりませんでした。私が違う時に使った商用品はJProbeJProfilerです。私はJProfilerをもっと好きでしたが、どちらも結果を得ることができます。

一般的に、プロセスはプロファイラ内でアプリケーションを設定し、具体的に調べたいクラスを指示することから始まります。プロファイラでアプリケーションを起動すると、実行とVMに関する情報が記録されます。したがって、アプリケーションを実行した後、そのコードを分析して、どのコードがほとんどの時間消費され、どのオブジェクトがほとんどのメモリを使用しているかを調べることができます。あなたはしばしば、スレッド、モニター、および他のものの数を監視することもできます。すべてのデータを活用するには、VMの内部構造とプロファイリングするコードについて十分に理解する必要があります。

Good Luck!

関連する問題