【问题标题】:Difference in runtime between <,> and == (python)<,> 和 == 之间的运行时差异(python)
【发布时间】:2021-08-28 14:00:31
【问题描述】:

所以我在做一个二分搜索算法,想知道比较整数 x,y(例如 x y)的运行时间是否比检查 x == y 更快。

【问题讨论】:

  • 不要认为有太大区别(实际测试过,确实没有区别(有点,== 有时时间更长,有时&lt;&gt; )),要么你是否必须对特定条件进行比较,要么如何,你做的比较越多,花费的时间就越多
  • 可能有些答案会告诉“这取决于架构”,我真的不认为这会成为现实生活中的瓶颈
  • 这是一条简单的行,您可以运行以获取每一次比较的总时间为一百万次运行(多次运行整个事情以获得更准确的结果):import timeit; print(timeit.timeit(lambda x=70: x == 70, number=1_000_000)); print(timeit.timeit(lambda x=70: x &gt; 70, number=1_000_000)); print(timeit.timeit(lambda x=70: x &lt; 70, number=1_000_000)) 如您所愿注意然后== 有点慢,虽然时间差非常小。另外,正如我所读到的,如果您担心 python 的性能,那么 。不要使用 python 或类似的东西

标签: python python-3.x algorithm runtime


【解决方案1】:

如果我们想了解更多,让我们以@matiiss 向timeit 的出色推荐为基础。我将稍微更改他们的 timeit 代码,以便我们可以更仔细地查看三个比较。这将消除函数调用的开销,并希望突出任何差异。

import timeit
print(timeit.timeit("x == 70", setup="x = 70", number=100_000_000))
print(timeit.timeit("x > 70", setup="x = 70", number=100_000_000))
print(timeit.timeit("x < 70", setup="x = 70", number=100_000_000))

在我的带有 vanilla python 的笔记本电脑上,一个示例运行(每次比较测试 1 亿次)返回:

2.378
2.384
2.374

(为了便于阅读,被截断为 3 位)

向我暗示基本上没有区别。至少在这个设置下。不过,其他 python 实现的行为可能会有所不同。

【讨论】:

  • 还不如截断000000005,这是以十进制打印二进制数字的神器,有点让人分心。
  • 当然可以。我只是准确地粘贴了我得到的结果,但我同意这是一种分心
猜你喜欢
  • 2016-10-22
  • 2018-06-21
  • 2015-07-13
  • 1970-01-01
  • 2013-04-02
  • 1970-01-01
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多