需求
尽管网上已经很多python图形化性能分析的帖子,比如vprof,pyheat等等。
但是亲测都不好用,原因两点:
- 版本兼容问题导致的环境搭建困难。照着那些帖子做,做了发现报错,根本运行不了。尤其是在python2上开发的库。
- 只能分析单个文件,好看不实用。比如pyheat。
本文的作用是较少一种从0到1完整图形性能分析的方法。该方式基于以下工具:
- cProfile
- pstats
- Gprof2Do(dot)
- powershell
步骤
- 首先,在目标机器上(楼主是树莓派)使用python内建的cProfile进行性能测试:
python3 -m cProfile -o sample.out test.py
生成的sample.out是二进制文件,不能直接查看,需要利用pstats。树莓派上不方便,在此用WinSCP传回pc。
- 在windows上安装Graphviz ,check一下bin目录下有dot.exe。
将安装目录下的Graphviz2.38\bin加入环境变量PATH。否则会报错找不到dot。 - 安装gprof2dot:
python3 -m pip install gprof2dot
注意不要拷贝国内某网页上链接的gprof2dot,那个版本太老了,会报错:
ValueError: unknown record type in log file
- 在powshell下(vs code自带)执行以下命令生成png:
python3 -m gprof2dot -f pstats summary.out | dot -Tpng -o result.png