当前位置: 首页 > 知识库问答 >
问题:

为什么max()函数在比较2个元素与直接比较if语句时要慢得多?

於宾白
2023-03-14

通过运行下面的代码,我可以直接与if语句进行比较,速度几乎是使用max函数的4倍。

我试图理解这背后的原因。

对比:0.63秒,最大:2.3秒

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))

共有1个答案

利博远
2023-03-14

因为< code>max需要在字典中查找函数名,然后进行函数调用,而直接< code >

max当您拥有更多元素时,速度方面开始变得有趣。

相关/同速差:

  • 为什么字典(键)的运行速度比字典[键] 慢
  • 为什么 [] 比列表 () 快?
 类似资料:
  • 作为在正常情况下使用内置问题的后续,我进行了一些测试,并遇到了令人惊讶的结果。 我在这里比较了传统的< code>import语句和对< code>__import__内置函数的调用的执行时间。为此,我在交互模式下使用以下脚本: 与链接的问题一样,这里是导入以及其他一些标准模块时的比较: 到目前为止,比更快。这对我来说很有意义,因为正如我在链接的帖子中所写的那样,我发现与相比,当后者导致对的调用时

  • 我试着比较两个值 我得到一个错误

  • 问题内容: 在Python中使用IF语句时,必须执行以下操作才能使“层叠”正常工作。 检查“等于”时,是否有办法使Python接受多个值?例如, 问题答案: if job in (“mechanic”, “tech”): print “awesome” elif job in (“tool”, “rock”): print “dolt” 括号中的值是一个元组。该运营商检查,看是否右手柄元组内的某处

  • 2)在火花中: 同样的,在Spark中需要30秒,在Python中需要1秒。 我的Spark比纯Python慢得多的几个可能原因:

  • 我发现 比 Python 2 和 3 中的函数慢。 Python 2 蟒蛇 3 为什么<code>max</code>(<code>O(n)</code>)比<code>sort</code>函数(<code<O(nlogn)</code>)慢?