python - 为什么 max() 函数在比较 2 个元素与直接比较 if 语句时要慢得多?
问题描述
通过运行下面的代码,我可以直接与 if 语句进行比较,速度几乎是使用 max 函数的 4 倍。
我试图了解这背后的原因。
比较:0.63s,最大值:2.3s
import time
if _name_ == '_main_':
sim = 10**7
s = time.time()
for _ in range(sim):
if 1 > 2:
pass
res1 = time.time()-s
s = time.time()
for _ in range(sim):
max(1, 2)
res2 = time.time()-s
print('comparison : {:.2}s, max : {:.2}s'.format(res1, res2))
解决方案
因为max
涉及到函数名称的字典查找,然后是函数调用,而直接<
运算符则没有。
max
当你有更多元素时,它开始变得有趣。
相关/同速差: