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 要したことが確認できます。