Nanashi-softプ ログラマ専用Eclipseで開発


◇Eclipseで開発 -プロファイラを使ってみる(2-

まずは基本的なところから

TPTPのプロファイラはメソッドの単位で速度を計測します
ですから,mainメソッドしか無い場合,実行しても意味がありません

四則演算を各メソッドにわけて処理するサンプルプログラムを
作成して,どのように表示されるか試してみました

○1から100までの四則演算表を作成するプログラム
public class main_test2 {
    public static void main(String[] args) {
        int i, j;
        for(j=1; j <= 100; j++){
            for(i=1; i <= 100; i++){
                calc_add(i, j);    //+
                calc_sub(i, j);    //-
                calc_mul(i, j);    //×
                calc_div(i, j);    //÷
            }
        }
    }
    static void calc_add(int i, int j){
        int val;
        val = i + j;
    }
    static void calc_sub(int i, int j){
        int val;
        val = i - j;
    }
    static void calc_mul(int i, int j){
        int val;
        val = i * j;
    }
    static void calc_div(int i, int j){
        int val;
        val = i / j;
    }
}
Eclipseメニューの実行→プロファイルをクリック
構成の編集ダイアログ画面が表示されます
デフォルトのままで特に問題は無いので,そのままプロファイルボタンをクリック
しばらくすると,パースペクティブを プロファイルおよびログング に切り替えるか聞いてくるので,はいボタンをクリック
ステータスバーに進行状況が表示されます

左のプロファイルのところに,<終了しました>と表示されると計測完了です
すぐ下の,実行時間分析をダブルクリックしてください
右にセッションの要約画面が表示され,△をクリックして開けて,見易いように幅を整えると以下のようになります

calc_addメソッドが遅いと……いや,そんなわきゃない(*'-')
何度も試してみましたが,どうやっても足し算が圧倒的に時間がかかった結果になります
コレ,バグってるよね? 足し算だけが遅いわけないよね?(*'-')

試行錯誤の末,わかったことは,
一番最初に呼び出されるメソッドが遅くなる。ということ
Javaは,動的にメソッドを探しに行くので,そうなるらしい

……で,純粋に処理時間だけを集計する方法は無いかと探したところ,ありました
Eclipseメニュー→実行→プロファイルの構成
左のJavaアプリケーションの左の△を開いて,ターゲットのプロジェクトをクリック
Profile Settingsタブをクリック
実行時間分析をダブルクリック(そういう操作があるようには見えないが,できる)
データのタイプを実行統計(圧縮済み)の表示にチェック
完了ボタンをクリック
閉じるボタンをクリック
これで次回から,処理時間のみが集計されるようになります


TOPプログラマ 専用Eclipseで開発