性能分析器
大约8到9年前,我看到一个用于Visual Studio的工具(我不太记得名字了),它可以可视化函数调用和它们的性能。我非常喜欢这个工具,所以我在想,Python中有没有类似的东西。假设你有三个函数:
def first_func():
...
def second_func():
...
for i in xrange(10):
first_function()
...
def third_func():
...
for i in xrange(5):
second_function()
...
那么,这个工具的最终报告大概是这样的(包括连接图):
first_func[avg 2ms] <--50 times--< second_func[avg 25ms] <--5 times--< third_func[avg 140ms]
像这样的工具可以更容易地找到系统中的瓶颈,尤其是对于大型系统来说。
3 个回答
1
我们常常会想,了解函数被调用的次数、它们花费的时间(自我时间和总时间),以及谁在调用谁的频率,这些信息就足够了。这样我们就可以像侦探一样,找出问题所在。
但还有一种方法,就是不关注函数,而是关注代码的每一行,看看它们在整个运行时间中占了多少比例。原因是,如果某一行代码能够通过避免执行、删除或者用其他方式完成它的工作而不花时间,那么这个比例就是你可以节省的时间。你不需要当侦探也能找到问题所在。
代码中的任何瓶颈都会表现为这样的某一行,而具体的百分比并不重要。这里有一个例子。
5
你可以使用随 Python 安装包一起提供的性能分析工具。点击这里查看 Python 性能分析工具的详细信息