【问题标题】:Where can I find the time and space complexity of the built-in sequence types in Python在哪里可以找到 Python 中内置序列类型的时间和空间复杂度
【发布时间】:2010-09-07 21:31:11
【问题描述】:

我一直无法找到此信息的来源,我没有亲自查看 Python 源代码以确定对象的工作方式。有谁知道我在哪里可以在网上找到这个?

【问题讨论】:

    标签: python performance complexity-theory big-o sequences


    【解决方案1】:

    如果你问我认为你在问什么,你可以找到他们Here... 第 476 页及以上。

    它是围绕 Python 的优化技术编写的;它主要是时间效率的 Big-O 符号,没有太多内存。

    【讨论】:

      【解决方案2】:

      Raymond D. Hettinger 对名为“Core Python Containers - Under the Hood”的 Python 内置集合做了 an excellent talk (slides)。我看到的版本主要集中在setdict,但也涵盖了list

      a blog 也有来自 EuroPython 的相关幻灯片的一些照片。

      这是我在list上的笔记总结:

      • 将项目存储为指针数组。下标花费 O(1) 时间。追加成本摊销 O(1) 时间。插入花费 O(n) 时间。
      • 在过度分配增长时尽量避免memcpy。许多小型列表会浪费大量空间,但大型列表不会浪费超过 12.5% 的过度分配空间。
      • 一些操作预先调整大小。给出的示例包括 range(n)map()list()[None] * n 和切片。
      • 缩小时,数组只有在浪费 50% 的空间时才会被realloced。 pop 很便宜。

      【讨论】:

        【解决方案3】:

        查看 py dot org wiki 上的 TimeComplexity 页面。至少就时间复杂度而言,它涵盖了 set/dicts/lists/etc。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-11-17
          • 1970-01-01
          • 2020-03-25
          • 2012-08-14
          • 2019-06-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多