python-3.x - 为什么python的for循环对于大输入如此非线性?

标签 python-3.x for-loop benchmarking

我在对一些 python 代码进行基准测试时发现了一些奇怪的东西。我使用以下函数来测量遍历空 for 循环所需的速度:

def f(n):
    t1 = time.time()
    for i in range(n):
        pass
    print(time.time() - t1)
f(10**6)打印约 0.035 , f(10**7)关于 0.35 , f(10**8)关于 3.5 , 和 f(10**9)关于 35 .但是f(10**10) ?好了2000 .这当然是出乎意料的。为什么迭代 10 倍的元素需要 60 多倍的时间?导致这种情况的python for循环是什么?这是python特定的,还是在很多语言中都会发生?

最佳答案

当你超过 10^9你超出了 32 位整数范围。 Python3 然后透明地将您移至 arbitrary precision integers ,分配和使用要慢得多。

一般来说,处理如此大的数字是 Python3 比 Python2 慢得多的领域之一(至少在许多系统上有快速的 64 位整数)。从好的方面来说,它使 python 更易于使用,更少 overflow类型错误。

关于python-3.x - 为什么python的for循环对于大输入如此非线性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28662188/

相关文章:

python - Python系统的基准测试系统性能

python - 在 python 中构建不同的对

javascript - 在 FOR 循环中只运行一次 IF

javascript - 通过 for 循环绑定(bind)的事件中的数值错误

ruby-on-rails - 对 Rails 模型方法进行基准测试

javascript - Nodejs 中的 JS Performance.now() 和 console.time() 不准确?

python - pyqtgraph自定义缩放问题

Python:读取文件直到一行以二进制模式匹配字符串

python - 如何在 Python 中扩展这个嵌套列表理解

java - 尝试设置值时出现空指针异常