ソースからNutchと呼ばれるJavaWeb検索プログラムのプロファイルを作成しようとしています。私が理解している限り、プロファイリングするには、GProfなどのプログラムで開くプロファイルファイルを生成するために、コンパイラでプロファイリングを有効にする必要があります。ソフトウェアをコンパイルするためにすべてがソースルートディレクトリでANTを実行している場合、これを行うにはどうすればよいですか?
3 に答える
新しいJDK(最新の1.6アップデート7以降)を実行している場合は、Javaプロセスをプロファイリングする準備をする限り何もする必要はありません。JVisualVM(JDKに付属)を使用してプロセスに接続し、プロファイルボタンをクリックするだけです。
@Charlieの回答に応えて、理想的には、プログラムがどのように時間を費やしているかについての情報が必要だと言います。
別の視点があります-あなたはプログラムがその時間を費やす理由を知る必要があります。
各サイクルが費やされる理由は一連の理由であり、各リンクはコールスタック上のコード行です。チェーンは、その最も弱いリンクよりも強力ではありません。
プログラムが可能な限り高速でない限り、「ボトルネック」が発生します。
たとえば、「ボトルネック」が20%の時間を浪費している場合、それは20%の時間スタック上にある最適化可能なコード行(つまり、正当化が不十分)で構成されます。あなたがしなければならないのはそれを見つけることだけです。
スタックのサンプルを10,000個取得すると、そのうちの約2,000個になります。10個のサンプルを取得すると、平均して2個になります。
実際、プログラムをランダムに数回一時停止してコールスタックを調べた場合、わずか2つのサンプルで最適化可能なコード行が表示された場合は、「ボトルネック」が見つかりました。あなたはそれを修正し、素晴らしいスピードアップを得て、そしてプロセス全体を繰り返すことができます。
それがこのテクニックの基礎です。
とにかく、gprofの概念の観点から考えることはあなたにうまく役立たないでしょう。