Xdebug によるプロファイリングとプロファイリングログの解析

Xdebug を利用すると PHP プログラムのプロファイリング (Profiling) を行うことができます。

プロファイリングの有効化

プロファイリングを有効にするには、php.ini にて xdebug.profiler_enable スイッチを On にします。

xdebug.profiler_enable = 1
xdebug.profiler_output_dir  = "C:/Temp"

profiler_output_dir はプロファイラログの出力先を指定します。

ログの追加

ログを既存ログの上書きではなく、追加する場合は xdebug.profiler_append を On にします。

xdebug.profiler_append = 1

ファイル名の指定

プロファイラログファイル名を明示的に指定する場合は、トレースファイルと同様にファイル名を指定することができます。

プロファイラでのみ利用可能な指定子としては、%s があります。これはファイル名のフルパスを意味します。

プロファイリングログの解析

プロファイリングログは以下のような情報です。


==== NEW PROFILING FILE ==============================================
version: 0.9.6
cmd: C:\Temp\tracetest.php
part: 1

events: Time

fl=C:\Temp\tracetest.php
fn=foo
7 11

fl=C:\Temp\tracetest.php
fn={main}

summary: 968

0 957
cfn=foo
calls=1 0 0
7 11

これは KCachegrind または WinCachegrind で解析します。

WinCachegrind によるプロファイリングログの解析

WinCachegrind の入手

WinCachegrind はオープンソースのソフトウェアで、Windows の環境で Cachegrind 互換のフォーマットのログファイルを解析することができます。

あるプロファイリングログの解析画面です。

上記のログによって、ひと目で mysql_connect にて 104ms、 mysql_select_db で 29ms、mysql_query で 9.3ms 要したことが確認できます。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Web/DB プログラミング徹底解説