修正日: 07/10/24
Sampler
Performance Tools入門 その2
1.はじめに
Samplerは対象アプリケーションの実行状態を調べ、どの関数(メソッド)にどれだけの時間を費やしているのかを調査するアプリケーションです。プログラム内のどの処理(関数やメソッド)にどれだけの実行時間を費やしているのかを把握し、動作速度最適化の参考にすることができます。本稿ではver2.0.1を元に説明します。本稿ではサンプルとしてSamplerSampleというテストアプリケーションを使います。こちらからダウンロードしてください。
プロファイリングとの違い
・Samplerで計測するためにはリコンパイルする必要はありません。配布用のソフトでもそのままサンプリングできます(ただしデバッグシンボルがなければ何を実行しているのかよくわかりませんが)。
・各関数の実行コストだけでなく総合的な影響を計測できます。
ある関数がアプリケーションに与える影響は以下のような関数で現すことができます。
パフォーマンスに与える影響=関数実行コスト×呼び出し回数
実行コストが高くても一度しか実行されない関数よりは、コストが低くても何度も繰り返し実行される関数の方が、アプリケーションに与える影響は大きくなります。そのような影響を調べることができます。
・各関数にどれだけの時間がかかっているか正確な数字は算出することはできません。Samplerによる計測では、ごく短い時間で終わってしまう関数などは計測から漏れる可能性があります。もちろんそのような関数はアプリケーションに与える影響は小さいため、注目する必要はあまりありませんが、正確な計測の用途には向きません。
2. 基本的な使い方
基本的な使い方は以下の通りです。とても簡単なので気軽に試してみることができます。(1)File→New...で新しいウィンドウを作成
対象アプリケーションなどを指定するウィンドウ(図1)が表示されますので、設定したらOKボタンを押します。サンプリングのためのウィンドウが表示されます。各項目の意味は以下の通りです。
・Executable:
サンプリングしたいアプリケーションのパスを指定します。「Set...」ボタンでファイルを指定することができます。(パスに日本語などが含まれているとSamplerで起動できないことがあるようです。起動できない時は対象アプリの位置を変えてみてください)
・Arguments:
対象アプリを起動するときに渡す引数を指定します。省略できます。
・Working Dir:
作業ディレクトリを指定します。Samplerの一時ファイルの置き場所及びファイルの読み書きを行う場所です。通常は無視してかまいません。
・Executable:
サンプリングしたいアプリケーションのパスを指定します。「Set...」ボタンでファイルを指定することができます。(パスに日本語などが含まれているとSamplerで起動できないことがあるようです。起動できない時は対象アプリの位置を変えてみてください)
・Arguments:
対象アプリを起動するときに渡す引数を指定します。省略できます。
・Working Dir:
作業ディレクトリを指定します。Samplerの一時ファイルの置き場所及びファイルの読み書きを行う場所です。通常は無視してかまいません。
【図1】 対象アプリケーション設定ウィンドウ
(2)「Launch&Record」ボタンでSamplerが対象アプリを起動
起動と同時にサンプリングも開始されます。すぐにサンプリングを開始しない時は「Launch」ボタンで起動し、適当なタイミングで「Start Recording」ボタンでサンプリングを開始します。
(3) 対象アプリで適当な作業
(4) 作業が終わったら...
「Stop Recording」でサンプリングを停止します。Samplerが収集したサンプルデータを処理し、結果がウィンドウに表示されます。