【发布时间】:2020-06-26 12:02:23
【问题描述】:
我正在尝试优化我用 Python 编写的一些代码,并且自始至终我都认为在 Python 中编写 x *= y 而不是 x = x * y 更有效(或者在最坏的情况下等效)。但是使用以下基本测试似乎并非如此
import time
t0 = time.time()
x = 1.01
for i in range(1000000):
x *= 1.000001
print(time.time() - t0)
# Outputs 0.1081240177154541
t0 = time.time()
x = 1.01
for i in range(1000000):
x = x * 1.000001
print(time.time() - t0)
# Outputs 0.07818889617919922
为什么会这样?
【问题讨论】:
-
将循环量乘以10并运行测试几次,您会发现时间几乎相同
-
当我运行这个时,时间相差不到万分之一。我建议使用更可靠的方法,例如
timeit。 -
补充一点:use 可以在 jupyter notebook 中使用 timeit 并指定运行次数和每次运行的循环次数。例如,10 次运行,每次 10 次循环:
%%timeit -r 10 -n 10
标签: python performance assignment-operator