使用n = len而不是直接使用len更快吗?

时间:2018-11-27 21:08:48

标签: python variable-length

通常可以节省一些时间,我希望我们在本地函数中使用n = len。 我很好奇哪个通话速度更快还是相同?

while i < len(s):
  # do something

vs

while i < n:
  # do something

应该没有太大的区别,但是使用len,我们需要先达到s,然后再调用s。 length 。这是O(1)+ O(1)。但是使用n则为O(1)。我想是这样。

2 个答案:

答案 0 :(得分:7)

更快。

  • 使用n一次查找变量(字典)。
  • 使用len(s)您要查找两次(len也是我们必须寻找的功能)。然后调用该函数。

也就是说,如果您大多数时间都进行while i < n:,则可以避免使用经典的for i in range(len(s)):循环,因为上限没有变化,并且仅在{{1} }(这可能会导致您:我为什么不直接迭代元素或使用range

enumerate允许将索引与不同列表进行比较。这就是重点。如果您确定界限,它的吸引力就会降低。

while i < len(s)循环中,很容易跳过for的增量(就像忘记了增加continue并以无限i循环结束一样容易)

答案 1 :(得分:5)

您是对的,这里有一些基准:

s = np.random.rand(100)
n = 100

以上已设置。

%%timeit
50 < len(s)

86.3 ns ± 2.4 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

对:

%%timeit
50 < n

36.8 ns ± 1.15 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

但是话又说回来,很难想象〜60ns的差异会影响速度。除非您要致电len(s)数百万次。