Python 3.12中的计时结果(与不同机器上的3.11和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
Python: 3.12.0 (main, Oct 7 2023, 10:42:35) [GCC 13.2.1 20230801]
怎么能做
更多
拿
较少的
时间
为什么
if x is None: pass
更快,当它必须做同样的事情时
x is None
检查,然后额外检查结果的真值(并执行或跳过
pass
)?
其他版本/机器上的时间:
-
Python 3.11:(12.4,9.3)和(12.0,8.8)
-
Python 3.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)