Python:多项任务与个人分配速度

abe*_*rsa 9 python performance variable-assignment timeit python-internals

我一直在寻求从我的代码中获得更多的性能; 最近,在浏览这个Python维基页面时,我发现了这个主张:

多次分配比单独分配慢.例如,"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
Run Code Online (Sandbox Code Playgroud)

我以不同的顺序重复了几次,等等,但多重赋值片段的表现始终比个人作业至少好30%.显然,我的代码涉及变量赋值的部分不会成为任何重大瓶颈的根源,但我的好奇心仍然被激发了.当文档另有说明时,为什么多项任务明显快于个人任务?

编辑:

我测试了两个以上变量的赋值,得到了以下结果:

趋势似乎或多或少一致; 任何人都可以复制它吗?

(CPU:Intel Core i7 @ 2.20GHz)

Joh*_*ooy 4

有趣的是,它可能在某种程度上取决于CPU。这些都是 64 位 Linux 机器(相同的 Python 版本)。

Intel(R) Core(TM)2 Duo CPU T7300 @ 2.00GHz 的结果

$ python -V
Python 2.7.5+
$ python -m timeit "x, y = 1.2, -1.4"
10000000 loops, best of 3: 0.0554 usec per loop
$ python -m timeit "x = 1.2" "y = -1.4"
10000000 loops, best of 3: 0.0349 usec per loop
Run Code Online (Sandbox Code Playgroud)

Intel(R) Pentium(R) CPU G850 @ 2.90GHz 的结果

$ python -V
Python 2.7.5+
$ python -m timeit "x, y = 1.2, -1.4"
10000000 loops, best of 3: 0.0245 usec per loop
$ python -m timeit "x = 1.2" "y = -1.4"
10000000 loops, best of 3: 0.0394 usec per loop
Run Code Online (Sandbox Code Playgroud)