当前位置: 首页 > article >正文

PHP和Python脚本的性能监测方案

目录

1. 说明

2. PHP脚本性能监测方案

2.1 安装xdebug

2.2 配置xdebug.ini 

2.3 命令行与VS Code中使用

- 命令行

- VS Code

2.4 QCacheGrind 浏览

3. Python脚本性能监测方案

3.1 命令行

4. 工具

5.参考


1. 说明

      获取我们的脚本程序运行时的指标,对分析与解决性能瓶颈问题是非常重要的一环,以下介绍在PHP与Python下的实践方案:安装性能监测插件 + 产生监测日志 + 用QCacheGrind工具分析
 

2. PHP脚本性能监测方案

2.1 安装xdebug
# wsl2下的ubuntu20 LTS为例

apt install php7.4-xdebug

2.2 配置xdebug.ini 

tips: 路径可通过查php -i|grep xdebug.ini获取

zend_extension=xdebug.so

# 指定日志输出路径
xdebug.output_dir = "/xdebug_logs"
xdebug.profiler_append = 0

xdebug.mode = profile
xdebug.start_with_request = trigger
xdebug.log_level = 7
2.3 命令行与VS Code中使用
- 命令行
php -dxdebug.mode=profile myscript
- VS Code

切记:vscode运行时连接WSL,选择对应的ubuntu目录,不然你的运行环境将不一致

普通的launch.json

{
            "name": "Debug current script in console",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "runtimeArgs": [
                "-d xdebug.mode=profile"
            ],
            "externalConsole": false,
            "port": 9003
}

以TP6为例的launch.json

{
            "name": "Run PHP Profile",
            "type": "php",
            "request": "launch",
            "cwd": "${workspaceRoot}",
            "program": "${workspaceRoot}/think",
            "args": [
                "myaction",
                "0"
            ],
            "runtimeArgs": [
                "-d xdebug.mode=profile"
            ],
            "externalConsole": false,
            "port": 9003
}

截图: 

2.4 QCacheGrind 浏览

 生成的日志保存在 \\wsl.localhost\Ubuntu-20.04\xdebug_logs

 

3. Python脚本性能监测方案

python内部已经提供了cProfile性能监测模块,我们用它就好,只需要把它出来的文件转换一下

3.1 命令行
# 产生日志到./tmp/profile_output.prof
python -m cProfile -o ./tmp/profile_output.prof ./class_test2.py

# 转换格式
python -m pyprof2calltree -i profile_output.prof -o callgrind.cprof

4. 工具

工具说明
QCacheGrind

windows工具,能可视化查看callgrind格式的性能数据

下载:https://sourceforge.net/projects/qcachegrindwin/

PHP
XDebug官网: Xdebug - Debugger and Profiler Tool for PHP
Python
cProfile内置标准模块, 性能分析模块
例子: python -m cProfile -o ./tmp/profile_output.prof ./class_test2.py
pyprof2calltree把cprofile产生的性能日志转换为QCacheGrind格式,
例子: python -m pyprof2calltree -i profile_output.prof -o callgrind.cprof

5.参考

- Xdebug: Documentation » Profiling

- The Python Profilers — Python 3.13.0 documentation

- https://gist.github.com/Susensio/efd9422e14556dff4122434c3603aff3


http://www.kler.cn/a/390207.html

相关文章:

  • uniapp+vue2 设置全局变量和全局方法 (兼容h5/微信小程序)
  • GISBox VS ArcGIS:分别适用于大型和小型项目的两款GIS软件
  • android dvr黑屏
  • 若依笔记(八):Docker容器化并部署到公网
  • Java项目实战II基于微信小程序的个人行政复议在线预约系统微信小程序(开发文档+数据库+源码)
  • redhat虚拟机
  • 游戏中的设计模式及杂项
  • 【Android】名不符实的Window类
  • NVM 介绍及使用指南
  • 【C++学习笔记】第一个C++程序
  • 如何评估Elasticsearch查询性能的具体指标?
  • 【C++课程学习】:二叉搜索树
  • 前端学习八股资料CSS(一)
  • Golang | Leetcode Golang题解之第546题移除盒子
  • Linux C/C++ Socket 编程
  • 今天给在家介绍一篇基于jsp的旅游网站设计与实现
  • 基于PyQt Python的深度学习图像处理界面开发(一)
  • YOLO即插即用---PConv
  • 【go从零单排】通道select、通道timeout、Non-Blocking Channel Operations非阻塞通道操作
  • CNN实现地铁短时客流预测
  • 解非线性方程
  • 【MPC-Simulink】EX03 基于非线性系统线性化模型MPC仿真(MIMO)
  • 光流法(Optical Flow)
  • 云岚到家 秒杀抢购
  • VCSVerdi:KDB文件的生成和导入
  • QT Unknown module(s) in QT 以及maintenance tool的更详细用法(qt6.6.0)