我正在尝试使用python的dis
库来试验&了解表现。以下是我尝试过的实验,结果如下。
import dis
def myfunc1(dictionary):
t = tuple(dictionary.items())
return t
def myfunc2(dictionary, func=tuple):
t = func(dictionary.items())
return t
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
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
是行号 ......但这对性能而言意味着什么呢?如果我试图决定使用哪个函数,我将如何使用dis
来比较这两个函数?
提前致谢。
答案 0 :(得分:4)
您(或至少是普通人)无法查看不同的汇编代码,并告诉哪一个更快。
从IPython尝试%% timeit magic功能。
它会自动运行这段代码几次,并给你一个客观的答案。
我最近发现this blog post教授如何在Python中测量这些东西。不仅是时间,还有内存使用。这个帖子的高光(至少对我来说)就是它教你实现%lprun魔术功能。
使用它,您将能够逐行查看您的功能,并准确了解每个功能对总花费的时间的贡献。
我已经使用了几个星期了,而且很棒。