性能测试
cProfile
Python编程时,除了要保证代码功能的正确性,还要考虑代码的执行效率。
什么是cProfile
cProfile(语言编写的测试模块)是一个标准库内建的性能分析工具,可以在标准输出中看到每一个函数被调用的次数和运行的时间,从而找到程序的性能瓶颈,从而有针对性的进行性能优化。
可以使用cProfile的run方法来计算代码的执行效率,也可以在cmd执行
python -m cProfile filename.py
命令来实现,其中filename.py 是要运行程序的文件名。
在pycharm中执行如下代码
运行后结果如下:
第一行是总共调用function次数,和总运行时间
「下面是cProfile输出的各个参数说明」
ncalls:函数调用次数;
tottime:函数的总的运行时间,除掉函数中调用子函数的运行时间;
percall:函数运行一次的平均时间等于 tottime/ncalls;
cumtime:表示该函数及其所有子函数的调用运行的时间,包含了子函数的运行时间;
percall:函数运行一次的平均时间,等于 cumtime/ncalls;
filename:lineno(function):每个函数调用的具体信息,函数所在的文件名称、代码行数、函数名称等;
怎么优化代码的性能呢
「下面这几点建议大家可以参考下:」
- 减少函数调用的数量
- 减少函数的调用层次
- 使用内置函数和库
- 避免使用全局变量