zoukankan      html  css  js  c++  java
  • xhprof安装和使用

    安装

    1. 下载

    根据自己PHP版本下载,phpinfo()查看自己是TS/NTS VC9/VC11下载对应的版本,地址[http://windows.php.net/downloads/pecl/releases/xhprof/0.10.6/]

    2. 解压扩展

    php_xhprof.dll 解压到php安装目录的ext里

    3. 配置扩展

    配置php.ini文件 extension=php_xhprof.dll;
    调试信息的保存路径(该路径为调试文件生成和web工具读取路径 xhprof.output_dir= "D:/phpStudy/WWW/xhprof_log"

    重启APACHE,查看是否安装成功。

    4. 下载web工具

    下载地址[https://github.com/facebook/xhprof]

    • 解压xhprof-master到www目录
    • 运行http://localhost/xhprof/examples/sample.php 生成测试数据
    • 访问http://localhost/xhprof/xhprof_html/ 查看数据列表
    • 点击[View Full Callgraph] 报错需要安装Graphviz
    5. 安装Graphviz
    • 下载
      从graphviz官网下载 [http://www.graphviz.org/Download.php](目测这个已经挂了)
      或者从我的百度网盘下载 [http://pan.baidu.com/s/1i3mzunV]
      下载完后直接安装
    • 配置环境变量或者修改cmd 命令
      将下图配置到系统的环境变量

      或者修改下图文件中的cmd命令


      这时候点击就会有图片出来

    使用

    将xhprof使用到实际项目中,可以根据sample.php适当修改

                //开始监测,增添CPU数据,内存数据
                xhprof_enable(XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);
                $result = $this->resourceStockModel->specifyVender($param);
    
                //停止监测,并将监测结果保存到xhprof_data里面,此结果是一个多维数组
                $xhprof_data = xhprof_disable();
    
                //输出监测结果
    //            print_r($xhprof_data);
    
                //得到xprof的根目录,通过根目录引入xhprof_lib.php和xhprof_runs.php这两个文件
                $XHPROF_ROOT = 'D:phpStudyWWWxhprof';
                include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
                include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";
    
                //得到一个XHProfRuns_Default对象,其save_run方法可以将监测结果写入到一个日志文件中,然后返回日志文件名的前面一串ID
                $xhprof_runs = new XHProfRuns_Default();
                $run_id = $xhprof_runs->save_run($xhprof_data, "test_xhprof");
    
                //输出一个链接,指向解析run_id后的页面
    //            echo '<br>' . '<a href="/xhprof/xhprof_html/index.php?run='.$run_id.'&source=test_xhprof" target="_blank">result</a>';
    
    

    附录

    • 红色的矩形部分就是性能开销大,需要优化的函数,
    • 白色的矩形部分就是性能开销正常,不需要优化的函数,
    • 黄色的矩形部分相对于白色矩形稍微有一些性能开销,但是没有红色矩形那么大,也就是性能开销在白色矩形和红色矩形之间
    名称 含义
    FunctionName 调用的函数名
    Calls/Calls % 函数的调用次数,以及百分比。可以检查调用次数高的函数是否有必要。
    Incl. Wall Time (microsec) 函数运行时间(包括子函数)
    Excl. Wall Time(microsec) 函数运行时间(不包括子函数),这里可以倒叙,优化消耗时间最高的函数
    Incl. CPU(microsecs) 函数运行CPU(包括子函数)
    Excl. CPU(microsecs) 函数运行CPU(不包括子函数 )
    Incl.MemUse(bytes) 函数运行消耗内存(包括子函数)
    Excl.MemUse(bytes) 函数运行消耗内存(不包括子函数)
    不积跬步,无以至千里
  • 相关阅读:
    Redis学习
    MySQL索引
    细数 Java 线程池的原理
    红黑树学习
    HashMap学习
    Java集合框架
    Java性能优化的45个细节
    MyBatis理解
    jenkins+git+maven+tomcat+jdk本地部署windows版
    windows版docker安装nginx,并设置目录挂载
  • 原文地址:https://www.cnblogs.com/wu-song/p/8514350.html
Copyright © 2011-2022 走看看