【发布时间】:2026-01-29 22:30:01
【问题描述】:
这是我的意思的一个例子:
s = """
if x > 10:
x -= 10
else:
x = 0
"""
import timeit
print(timeit.timeit(s, setup="x=5", number=99999999))
无论设置如何,在我的计算机上输出大约 3 秒(x=5 与 x=15,没有区别)
如果我要使用更短的代码,首先减少x -= 10,然后才检查x < 0,我会得到更糟糕的结果:
s = """
x -= 10
if x < 0:
x = 0
"""
import timeit
print(timeit.timeit(s, setup="x=5", number=99999999))
不管x的初始值是5还是15,它都会输出大约6秒。
我知道x < 10 会更慢,因为我们首先调用x -= 10 然后设置x = 0 而不是简单地设置x 一次。
问题是,99% 的情况下,我的程序中 x 的初始值设置为远高于 10 的数字,所以我认为我会使用较短的版本,因为大多数时候我应该看不出性能上的差异。
但是,即使x > 10,性能也存在巨大差异,这是为什么呢?
【问题讨论】:
-
python 2.7 中也会出现这种时间差异。
标签: python performance python-3.x performance-testing