例如,ArrayList
Java 中的 s 的大小调整因子为 2。ArrayList
当空间不足时,该数组的所有元素都会转移到一个新数组,该新数组的大小是原始数组的 2 倍。
由于 Python 列表/数组本质上是动态的,那么它们的大小调整因子是多少?或者他们使用其他一些缩放方法?如果是的话,那个方法是什么?它的渐近运行时间(大O)是多少?
特别是对于 CPython,调整大小期间的过度分配是在对象/listobject.c https://github.com/python/cpython/blob/master/Objects/listobject.c。它被描述为
温和,但是......足以在存在性能不佳的系统 realloc() 的情况下,在长序列的 appends() 上提供线性时间摊销行为。
当列表需要增长时,它会增长到所需大小的大约 112.5%。特别是,实际尺寸是new_size + new_size >> 3 + (newsize < 9 ? 3 : 6)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)