gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 00:07:28 27 4
gpt4 key购买 nike

我正在尝试使用 python 的 dis用于试验和理解性能的库。下面是我尝试过的实验,以及结果。

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)

  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)

  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

现在,我明白了......

  • 最左边的4 & 5是行号
  • 中间一列是机器调用的操作码
  • 右边一列是对象(带opargs ?)

...但这一切在性能方面意味着什么?如果我试图决定使用哪个函数,我将如何使用 dis 来比较两者?

提前致谢。

最佳答案

您(或者至少是普通人)无法查看不同的汇编代码,并判断哪个更快。

尝试 IPython 中的 %%timeit 魔法函数。

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

我最近找到了this blog post教授如何在 Python 中测量这些类型的东西。不仅是时间,还有内存使用。该帖子的亮点(至少对我而言)是它教您实现 %lprun 魔法函数。

使用它,您将能够逐行查看您的函数,并准确了解每个函数占总花费时间的比例。

我已经使用了几个星期了,非常好。

关于python - 如何使用 `dis.dis` 来分析性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19322705/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com