首页 > 解决方案 > 为什么 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))

标签: pythonmax

解决方案


因为max涉及到函数名称的字典查找,然后是函数调用,而直接<运算符则没有。

max当你有更多元素时,它开始变得有趣。

相关/同速差:


推荐阅读