【发布时间】:2014-04-12 06:55:52
【问题描述】:
我一直希望从我的代码中获得更多性能;最近,在浏览this Python wiki page时,我发现了这个说法:
多重赋值比单独赋值慢。例如“x,y=a,b”比“x=a; y=b”慢。
很好奇,我测试了它(在 Python 2.7 上):
$ python -m timeit "x, y = 1.2, -1.4"
10000000 loops, best of 3: 0.0365 usec per loop
$ python -m timeit "x = 1.2" "y = -1.4"
10000000 loops, best of 3: 0.0542 usec per loop
我重复了几次,以不同的顺序等,但多次分配 sn-p 始终比单独分配好至少 30%。显然,我的代码中涉及变量赋值的部分不会成为任何重大瓶颈的根源,但我的好奇心还是被激起了。当文档另有说明时,为什么多次分配明显比单独分配快?
编辑:
我测试了对两个以上变量的赋值,得到了以下结果:
趋势似乎或多或少是一致的;谁能重现它?
(CPU:Intel Core i7 @ 2.20GHz)
【问题讨论】:
-
对于 Python 2.7.5,我看不到与您的一致的结果。我看到多个分配 @ 0.0494 usec/loop 和单独分配 @ 0.0452 usec/loop。
-
这里是 Python 2.7.4 Ubuntu 13.04。我能够重现该问题,但在 Python 3.3.2 中,我不能。
-
Python 2.7.6 给出了与 OP 类似的发现。 Python 3.3 给出了更接近(0.49 和 0.55)的读数。
-
362 与 Python 2.7.3 中的 453。我认为 Python 3.4 ~250 没有区别
标签: python performance variable-assignment timeit python-internals