【发布时间】:2016-01-10 20:38:54
【问题描述】:
据我了解,元组和字符串是不可变的,可以进行优化,例如重用不会改变的内存。然而,一个明显的优化,使元组切片与原始元组引用相同的内存,并没有包含在 python 中。
我知道这个优化不包括在内,因为当我对以下函数计时时,所花费的时间像 O(n^2) 而不是 O(n),所以会发生完整的复制:
def test(n):
tup = tuple(range(n))
for i in xrange(n):
tup[0:i]
如果实施了这种优化,python 的某些行为会改变吗?即使原始文件是不可变的,复制也会带来一些性能优势吗?
【问题讨论】:
-
有时答案是“因为还没有人花时间完全实现它”。
-
提交拉取请求 :)
-
正如您所指出的,这可能是在减少复制量和减少对原始元组的引用计数之间进行权衡,以便更早地对其进行垃圾收集。
-
算法复杂性并不是最终的结果;如果创建视图具有(相对)大的固定成本,我不会感到惊讶。
标签: python