XHProf
PHPのプロファイラー
有路 央
2013.1.10
XHProfとは
• PHPによるPHPのためのPHPプロファイラ
• 作成:facebookエンジニア
https://github.com/facebook/xhprof
• 使い方
PHPの動いているサーバにインストールする
実行プログラ...
How to install
• 最新版をDLしてくる
http://pecl.php.net/package/xhprof
• 解凍して、configureして、phpizeして、makeし
てmake testしてmake install
...
How to install 2
• Xhprofの解凍先にある
xhprof_html/xhprof_libを適当な
documentRootにコピーする
• PHP/apache再起動
測定する
xhprof_enable();
function __shutdown_func(){
$xhprof_data = xhprof_disable();
$XHPROF_ROOT = '/var/www/foo';
$XHPROF_...
結果を見る
題材:ZendFramework2のスケルトンモデル
Function名
呼ばれた数
Functionの
トータル時間
そのFunction自体
にかかった時間
Xhprofの結果表示画面(ブラウザ)
グラフ
Incl.Wall Timeの降順でソート(デフォルト)
関数の全体時間
Function Name Calls Calls%
Incl. Wall
Time
(microsec)
IWall%
Excl. Wall
Time
(microse...
Callsの降順でソート
呼ばれた回数
Function Name Calls Calls%
Incl. Wall
Time
(microsec)
IWall%
Excl. Wall
Time
(microsec)
EWall
%
is_arr...
Excl.Wall Timeの降順でソート
関数単体の実行時間
Function Name Calls Calls%
Incl. Wall
Time
(microsec)
IWall%
Excl. Wall
Time
(microsec)
EW...
グラフ
Xhprof
Xhprof
Upcoming SlideShare
Loading in …5
×

Xhprof

881 views

Published on

Published in: Technology
  • php >=5.4では
    http://michaelsanford.com/compiling-xhprof-for-php-5-4/
    参照
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Xhprof

  1. 1. XHProf PHPのプロファイラー 有路 央 2013.1.10
  2. 2. XHProfとは • PHPによるPHPのためのPHPプロファイラ • 作成:facebookエンジニア https://github.com/facebook/xhprof • 使い方 PHPの動いているサーバにインストールする 実行プログラムに数行埋め込む 管理画面で愉悦る
  3. 3. How to install • 最新版をDLしてくる http://pecl.php.net/package/xhprof • 解凍して、configureして、phpizeして、makeし てmake testしてmake install • php.ini に extension=xhprof.so 追加 • ついでに、 xhprof.output_dir=“/tmp” 追加 • 最後にgraphviz/graphviz-php/graphviz-gdをイ ンストール • yumだとrepo追加しないとだめかも
  4. 4. How to install 2 • Xhprofの解凍先にある xhprof_html/xhprof_libを適当な documentRootにコピーする • PHP/apache再起動
  5. 5. 測定する xhprof_enable(); function __shutdown_func(){ $xhprof_data = xhprof_disable(); $XHPROF_ROOT = '/var/www/foo'; $XHPROF_SOURCE_NAME = ‘hoge'; include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php"; include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php"; $xhprof_runs = new XHProfRuns_Default(); $run_id = $xhprof_runs- >save_run($xhprof_data,$XHPROF_SOURCE_NAME); echo ”<a href="http://hoge.piyo/xhprof_html/index.php?run=$run_id&source=$XHPR OF_SOURCE_NAME">xhprof Result</a>n“; } register_shutdown_function(“__shutdown_func”); 最初に呼ばれるphpにでも埋め込む もしくは、ファイルに保存して、auto_prepend_file などで指定する
  6. 6. 結果を見る 題材:ZendFramework2のスケルトンモデル
  7. 7. Function名 呼ばれた数 Functionの トータル時間 そのFunction自体 にかかった時間 Xhprofの結果表示画面(ブラウザ) グラフ
  8. 8. Incl.Wall Timeの降順でソート(デフォルト) 関数の全体時間 Function Name Calls Calls% Incl. Wall Time (microsec) IWall% Excl. Wall Time (microsec) EWall% main() 1 0.0% 1,187,414 100.0% 328 0.0% ComposerAutoloadClas sLoader::loadClass 111 1.4% 1,096,537 92.3% 16,327 1.4% call_user_func 23 0.3% 1,059,254 89.2% 92 0.0% ZendMvcApplication::ini t 1 0.0% 837,964 70.6% 51 0.0% ZendServiceManagerSe rviceManager::get 38 0.5% 799,653 67.3% 696 0.1%
  9. 9. Callsの降順でソート 呼ばれた回数 Function Name Calls Calls% Incl. Wall Time (microsec) IWall% Excl. Wall Time (microsec) EWall % is_array 596 7.5% 70 0.0% 70 0.0% str_replace 356 4.5% 286 0.0% 286 0.0% substr 353 4.4% 134 0.0% 134 0.0% ZendServiceManagerServi ceManager::canonicalizeNa me 335 4.2% 1,953 0.2% 1,621 0.1% strtolower 238 3.0% 42 0.0% 42 0.0%
  10. 10. Excl.Wall Timeの降順でソート 関数単体の実行時間 Function Name Calls Calls% Incl. Wall Time (microsec) IWall% Excl. Wall Time (microsec) EWall% file_exists 167 2.1% 217,790 18.3% 217,790 18.3% load::View/HelperConf ig.php 3 0.0% 18,925 1.6% 18,925 1.6% ComposerAutoloadCl assLoader::loadClass 111 1.4% 1,096,537 92.3% 16,327 1.4% load::Container/Abstra ctStandalone.php 1 0.0% 10,717 0.9% 10,717 0.9% load::Container/Abstra ctContainer.php 1 0.0% 10,357 0.9% 10,357 0.9%
  11. 11. グラフ

×