首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用`dis.dis`来分析性能?

如何使用`dis.dis`来分析性能?
EN

Stack Overflow用户
提问于 2013-10-11 16:14:50
回答 1查看 401关注 0票数 6

我正在尝试使用python的dis库来测试和理解性能。下面是我尝试过的一个实验,并给出结果。

代码语言:javascript
复制
import dis

def myfunc1(dictionary):
    t = tuple(dictionary.items())
    return t

def myfunc2(dictionary, func=tuple):
    t = func(dictionary.items())
    return t

>>> dis.dis(myfunc1)

代码语言:javascript
复制
  4           0 LOAD_GLOBAL              0 (tuple)
              3 LOAD_FAST                0 (dictionary)
              6 LOAD_ATTR                1 (items)
              9 CALL_FUNCTION            0
             12 CALL_FUNCTION            1
             15 STORE_FAST               1 (t)

  5          18 LOAD_FAST                1 (t)
             21 RETURN_VALUE 

>>> dis.dis(myfunc2)

代码语言:javascript
复制
  4           0 LOAD_FAST                1 (func)
              3 LOAD_FAST                0 (dictionary)
              6 LOAD_ATTR                0 (items)
              9 CALL_FUNCTION            0
             12 CALL_FUNCTION            1
             15 STORE_FAST               2 (t)

  5          18 LOAD_FAST                2 (t)
             21 RETURN_VALUE    

现在我明白了..。

...But,就性能而言,这一切意味着什么?如果我试图决定使用哪个函数,我将如何使用dis来比较这两个函数呢?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-11 17:35:10

你(或者至少是普通的人)不能看不同的汇编代码,也不能分辨哪一个更快。

从IPython中尝试%%timeit魔术函数。

它会自动运行这段代码几次,并给你一个客观的答案。

我最近发现了这篇博客文章,它教我如何用Python来度量这类事情。不仅是时间,还有内存的使用。这篇文章的亮点(至少对我来说)是在它教你实现%lprun魔术函数的时候。

使用它,您将能够逐行查看您的函数,并确切地知道每个函数对所花费的总时间的贡献。

我已经用了几个星期了,很棒。

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

https://stackoverflow.com/questions/19322705

复制
相关文章

相似问题

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