首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >性能分析器

性能分析器
EN

Stack Overflow用户
提问于 2011-04-22 01:58:44
回答 3查看 2K关注 0票数 3

大约在8-9年前,我看到了一个用于Visual Studio的工具(我不太记得它的名字了),它可以可视化函数调用及其性能。我真的很喜欢它,所以我想知道是否有类似于Python中的东西。假设你有三个函数:

代码语言:javascript
复制
def first_func():
    ...

def second_func():
    ...
    for i in xrange(10):
        first_function()
    ...

def third_func():
    ...
    for i in xrange(5):
        second_function()
    ...

因此,该工具的最终报告是这样的(包括连接图):

代码语言:javascript
复制
first_func[avg 2ms] <--50 times--< second_func[avg 25ms] <--5 times--< third_func[avg 140ms]

像这样的工具可以更容易地找到系统中的瓶颈。尤其是对于大型系统。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-22 02:09:01

您可以使用与python安装捆绑在一起的分析器。Python Profiler Link

票数 5
EN

Stack Overflow用户

发布于 2016-02-12 01:13:19

使用分析器逐行计时和执行频率:

首先,安装line_profiler

其次,通过@profile装饰器修饰你想要测量的函数来修改你的源代码。

第三,kernprof -l -v yourscript.py

-l选项告诉kernprof将@profile装饰器注入到脚本的内置中,而-v则告诉kernprof在脚本完成后显示计时信息。

输出:

票数 2
EN

Stack Overflow用户

发布于 2011-04-22 03:37:43

通常认为你需要知道的是事物被调用了多少次,它们花费了多少时间(自我与包含),以及谁-调用了多少时间。然后你就可以戴上侦探的帽子,希望能找出问题所在。

还有另一种方法,不是询问函数,而是询问代码行,它们在堆栈上的挂钟时间的百分比是多少。原因是,如果这样的代码行可以不花时间,通过避免或删除它或以不同的方式完成它的工作,那么百分比就是可以节省的百分比。你不一定非得是个侦探才能找到它。代码中的任何瓶颈都必须显示为这样的一行,精确的百分比并不重要。Here's an example.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5747956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档