Profile:
PyCharm提供了性能分析工具Run-》Profile,如下图所示。利用Profile工具可以对代码进行性能分析,找出瓶颈所在。
测试:
下面以一段测试代码来说明如何使用pycharm的Profile功能。
测试代码见下文,文件命名为Test.py, 一共有5个函数,每个函数都调用了time.sleep进行延时,其中fun5函数调用了fun4函数:
import time
def fun1(a, b):
print('fun1')
print(a, b)
time.sleep(1)
def fun2():
print('fun2')
time.sleep(1)
def fun3():
print('fun3')
time.sleep(2)
def fun4():
print('fun4')
time.sleep(1)
def fun5():
print('fun5')
time.sleep(1)
fun4()
fun1('foo', 'bar')
fun2()
fun3()
fun5()
点击Run-》Profile开始测试,代码运行结束后会生成一栏测试结果,测试结果由两部分构成,Statistcs(性能统计)和Call Graph(调用关系图):
Statistcs(性能统计):
性能统计界面由Name、Call Count、Time(ms)、Own Time(ms) 4列组成一个表格,见下图。
1. 表头Name显示被调用的模块或者函数;Call Count显示被调用的次数;Time(ms)显示运行时间和时间百分比,时间单位为毫秒(ms)。
2.点击表头上的小三角可以升序或降序排列表格。
3.在Name这一个列中双击某一行可以跳转到对应的代码。
4.以fun4这一行举例:fun4被调用了一次,运行时间为1000ms,占整个运行时间的16.7%
Call Graph(调用关系图):
Call Graph(调用关系图)界面直观展示了各函数直接的调用关系、运行时间和时间百分比,见下图。
0.右上角的4个按钮表示放大、缩小、真实大小、合适大小;
1.箭头表示调用关系,由调用者指向被调用者;
2.矩形的左上角显示模块或者函数的名称,右上角显示被调用的次数;
3.矩形中间显示运行时间和时间百分比;
4.矩形的颜色表示运行时间或者时间百分比大小的趋势:红色 > 黄绿色 > 绿色,由图可以看出fun3的矩形为黄绿色,fun1为绿色,所有fun3运行时间比fun1长。
5.从图中可以看出Test.py直接调用了fun3、fun1、fun2和fun5函数;fun5函数直接调用了fun4函数;fun1、fun2、fun3、fun4和fun5都直接调用了print以及sleep函数;整个测试代码运行的总时间为6006ms,其中fun3的运行时间为1999ms,所占的时间百分比为33.3%,也就是 1999ms / 6006ms = 33.3%。