在Python中,在为变量赋值时,我们可以这样做:
variable = variable + 20
或
variable += 20
。
虽然我确实理解这两个操作在语义上是相同的,即它们实现了将variable
的先前值增加20的相同目标,但我想知道是否存在微妙的运行时性能差异。两个,或任何其他可能认为比另一个更好的微小差异。
有没有这样的差异,还是它们完全一样?
如果有任何差异,对于其他语言(例如C ++)是否相同?
感谢。
答案 0 :(得分:2)
也许这可以帮助您更好地理解:
import dis
def a():
x = 0
x += 20
return x
def b():
x = 0
x = x + 20
return x
print 'In place add'
dis.dis(a)
print 'Binary add'
dis.dis(b)
我们得到以下输出:
In place add
4 0 LOAD_CONST 1 (0)
3 STORE_FAST 0 (x)
5 6 LOAD_FAST 0 (x)
9 LOAD_CONST 2 (20)
12 INPLACE_ADD
13 STORE_FAST 0 (x)
6 16 LOAD_FAST 0 (x)
19 RETURN_VALUE
Binary add
9 0 LOAD_CONST 1 (0)
3 STORE_FAST 0 (x)
10 6 LOAD_FAST 0 (x)
9 LOAD_CONST 2 (20)
12 BINARY_ADD
13 STORE_FAST 0 (x)
11 16 LOAD_FAST 0 (x)
19 RETURN_VALUE
你可以使用计时器进行一千次左右的循环来比较性能,但主要区别在于一个。我想二进制加法应该更快。