Python 3.12中的计时结果(在不同机器上与Python 3.11和Python 3.13类似):
When x = None:
13.8 ns x is None
10.1 ns if x is None: pass
When x = True:
13.9 ns x is None
11.1 ns if x is None: pass
more怎么能花less个时间呢?
为什么if x is None: pass
更快,当它必须做相同的x is None
判断,然后额外判断结果的真值(并做或跳过pass
)?
其他版本/计算机上的时间:
- Python3.11:(12.4,9.3)和(12.0,8.8)
- Python3.13:(29.1,24.6)和(29.1,22.6)
基准脚本(Attempt This Online!):
from timeit import repeat
import sys
for x in None, True:
print(f'When {x = }:')
for code in ['x is None', 'if x is None: pass'] * 2:
t = min(repeat(code, f'{x=}', repeat=100))
print(f'{t*1e3:4.1f} ns ', code)
print()
print('Python:', sys.version)