簡傑的php編程分享-1.3 xdebug性能分析

介紹

在上兩期中我已經對 xdebug 最核心的操做已經進行了講解。相信你能夠擺脫寫 var_dump($data);die; 的編寫和完成調試後的清除了。這一期咱們來學習xdebug的第二個特點-性能分析。這一個功能,在實操中用的不是不少。php

使用場景:nginx

  1. 高併發項目的核心功能優化。經過查看運行一個方法通過的依賴耗時狀況,進行代碼優化。

環境說明

  • windows
  • vagrant+vbox+centos7+nginx+php
  • phpstorm

學前準備

  1. xdebug + phpstorm 調試環境已經能夠正常運行

學習點

  1. 明白 xdebug 性能分析須要作那些配置
  2. 知道怎麼去看性能報告

xdebug 配置

xdebug 是經過訪問指定方法。生成性能分析文件,再經過分析軟件進行查看性能結果。segmentfault

php.ini 添加配置windows

xdebug.profiler_enable=Off
xdebug.profiler_enable_trigger=On
xdebug.profiler_enable_trigger_value="create"
xdebug.profiler_output_dir="/tmp/"
xdebug.profiler_output_name="cachegrind.out.%R"

phpstorm 分析性能文件

比較建議一個方法訪問完後,生成分析文件,立刻進行性能分析,分析完後再清除文件。爲了數據準確性,咱們還須要進行屢次對比。找性能參數的平均值來提升準確性。centos

咱們得知道那個依賴方法耗時最久,是什麼緣由。有沒有優化的可能。併發

phpstorm xdebug 性能分析工具詳解

咱們經過 tool -> Analyze Xdebug profiler Snapshot 打開性能分析文件 cachegrind.out. 打頭的文件。就會進入如下界面
Analyze Xdebug profiler Snapshotphpstorm

一、瞭解各個選項的意思函數

  • Refresh - 刷新
  • Execution statistics - 執行統計數據
  • Call Trees - 哪一個函數調用哪一個函數
  • Callable - 已執行的文件
  • Own Time - 函數執行本身的代碼所花費的時間(不包括對其餘函數的調用)
  • Calls - 調用次數
  • Callees - 調用哪些函數
  • Callers - 從函數被調用的地方
  • time 前的數字表明的是什麼意思

time 列裏有 數字和百分比。分別表明 執行時間和執行佔用總時間百分比高併發

單位是 server 旁邊的 time 那裏進行設置.默認是 ms工具

  • callees 裏的方法大部分都會出來一個摺疊的圖標,有什麼用

這個可讓咱們查看他的上一步執行了以什麼操做。這個能夠方便咱們在瞭解調用到這個函數的過程。

二、找到咱們關心的數據

  • 那些地方佔用的執行時間最多,爲何

咱們能夠在 Execution statistics 標籤裏對 own time 進行排序取執行佔用最多的內容。裏面會包含文件和函數以及方法。若是咱們設置了 server 關聯當前的項目,統計裏的方法是能夠進行跳轉到項目的實際代碼裏。

咱們經過 Callees 標籤查看函數裏那些方法調用耗時最多

  • 那些方法調用最屢次,在那些地方調用的比較多

Execution statistics 標籤裏對 calls 進行排序取執行次數最多的函數或方法。

可經過下面的 Callers 查看那些地方對他進行了調用

系列文章

  1. xdebug的安裝配置
  2. xdebug的實際運用
  3. xdebug性能分析 [本篇]

FQA

  1. 爲何要設置 xdebug.profiler_output_name 默認的不就能夠了嗎?

若是你的項目不是多入口的類型,你保存的到一個文件就會出現性能分析文件不精確的狀況。而我在上文中用的是 $_SERVER['REQUEST_URI'] 做爲文件後綴。能夠很好的區分性能分析文件。

相關文章
相關標籤/搜索