テンプレート・プロファイラ
WebRelease にはテンプレート・プロファイラが実装されています。テンプレート・プロファイラは、テンプレートの性能チューニングを支援するツールです。
WebRelease を長期に渡り使用していると、次のような局面が訪れることがあります。
- 最近、ページ数が増えてきたせいか、FTP (コンテンツ生成)にかかる時間が長くなってきた。なんとか1分以内程度に抑えたい。
- テンプレートをチューニングして FTP 時間を短縮することになったが、どの処理に時間がかかっているのかわからない。チューニングが手探りになってしまう。
- サーバの増強を行う前に、テンプレートで対応可能な部分がないかどうか、しっかりと調べたい。
このようなニーズに応えるべくテンプレート・プロファイラが実装されました。
プロファイルを取得する
最初に、テンプレート・プロファイラを使って、プロファイルを取得してみましょう。プロファイルの取得は簡単です。「テンプレート一覧」画面の「プロファイル」タブをクリックし、プロファイル画面を表示します。
表示されるプロファイル画面の上部に「次回 FTP 時に計測実施」というチェックボックスがあります。このチェックボックスを ON にした状態で 1 回 FTP (コンテンツ生成)を実行すると、FTP 中にプロファイラが動作してテンプレートのプロファイルが取得されます。
このチェックボックスは ON にするだけで OK です。保存ボタンをクリックする必要はありません。
チェックボックスを ON にした状態で FTP を実行したあと、再度プロファイル画面を表示すると、下記のようにプロファイル結果が表示されます。
プロファイル結果を読み解く
では、次に、このプロファイル結果をどのように読み解けばよいのかをご紹介しましょう。
- 下のスナップショットの「1」の部分に注目してください。getDocumentDate() というメソッドの名前が表示されています。ここに表示されているのが、FTP 実行中に、その内部で一番時間を消費したメソッドの名前です。
- 「2」の部分には、そのメソッド(この例では getDocumentDate() というメソッド)が定義されているコンポーネントやテンプレートの名前が表示されます。この例では getDocumentDate() メソッドは MethodLibrary というコンポーネントに定義されていることを表しています。
- 「3」の部分には、消費時間の内訳が表示されています。この例では、このメソッド内で 1,690.6 ミリ秒が消費されたこと、このメソッドがトータルで 104,965 回呼び出されたこと、そして、結果的に 1 回あたりの実行に要した時間は 16.1 μ秒であったことが表示されています。
- 消費時間には、そのメソッドが呼び出した、他のメソッドの処理時間は含まれていません。そのメソッド内で消費した時間のみが表示されています。
- 全メソッドに渡って消費時間を合算すると FTP に要した実時間より長くなる場合があります。これは、内部で並列処理が行われているためです。理論的には、消費時間の合算値は最大で実時間のコア数倍になります。
次は、メソッドの呼び出し元に関する情報について見てみましょう。下のスナップショット中のグリーン枠の部分に注目してください。この部分には、上記の getDocumentDate() というメソッドがどこから呼び出されたのかに関する詳細な情報が表示されています。「呼び出し元メソッド・展開」欄には、呼び出し元のメソッドの名前が表示されています。この例では、偶然ですが、呼び出し元のメソッドの名前も getDocumentDate() メソッドでした。この表示から、呼び出し元についてもそのメソッドが定義されているテンプレート、消費時間、呼び出し回数など、詳細な情報が読み取ることができます。
下のスナップショットのオレンジ枠部分には 2 番目に時間を消費したメソッドに関する情報が表示されています。表示内容と解釈は先述のとおりです。2 番目以降のメソッドについても、プロファイル結果は延々と続きます。
まとめ
簡単ですが、テンプレート・プロファイラについてご紹介させていただきました。この機能を利用することで効果的にテンプレートのチューニングができるでしょう。
- プロファイルの取得は簡単です。
- プロファイルの取得を行っても FTP 時間へのオーバーヘッドは比較的小さく抑えられています。保証できる数値ではありませんが、オーバーヘッドは 30% 以下と考えていただいてよいでしょう。ただし、プロファイルの取得が必要ない場合にはプロファイラは OFF にしておくのがよいでしょう。
- 消費時間の長いメソッドから順にチューニングしてゆくのがチューニングの基本です。1回あたりの実行時間を減らすか、または、呼び出される回数を減らすかのどちらかが主な対策となると思います。
- プロファイル結果は画面右上の「ダウンロード」ボタンでダウンロードすることができます。チューニング結果の比較のためにはダウンロードして保存しておくとよいでしょう。
- この例には現れませんでしたが、システム組み込み関数も計測され表示されます。