目次
デバッグツール
できること
- ステップ実行
- ブレークポイントの設置
- コールスタックの参照
- 変数の値を見る
- APIの成功/失敗情報を見る
向き
- 一度の実行で非常に多くの情報を取得することができる。実行のための準備が非常に大変なプログラムや、プログラムが小規模またはある程度問題の範囲が絞り込めている場合には有効な手段です。
- テストをしてもエラーの原因が判らないときに使用する
不向き
- 広範囲の調査を行うには多くの時間が必要であり、あまり効率的とはならない場合がある。この場合はモジュール間のデータの受け渡しの内容をログに出力しながらチェックすることで、問題がありそうなモジュールを特定していく必要があります。
プロファイラツール
できること
- メモリ中に確保されているオブジェクトのサイズや個数、オブジェクトが生成された場所といった情報を取得できる
- メソッドごとの合計処理時間をプログラムに特別なコードを書かずに取得することができる。特に処理に時間がかかっている部分を簡単に見つけることができるように工夫されている。
パフォーマンスを低下させる主な原因
- ファイルやネットワークなどのI/O処理待ち
- マルチスレッド環境での同期待ち
- 処理自体が非効率
パフォーマンスボトルネックの発生個所を見つけるには?
- 「合計処理時間の多いメソッド=(メソッド処理1回当たりの処理時間)×(メソッドの呼び出し回数)」を探すことが重要
向き
- メモリの増加傾向を調べたり、オブジェクトの参照を調べることによってメモリリークの原因を絞り込むのに使える。
- パフォーマンスが低下する原因を絞り込むのに使える。
不向き
- 原因を絞り込むだけで原因の特定には至らない。