我正在阅读有关数组操作的运行时复杂度,并了解到...
- ECMAScript规范没有规定特定的运行时复杂度,因此它取决于具体的实现/ JavaScript引擎/运行时行为[1] [2]。
Array.push()
在由类似哈希表的数据结构实现的稀疏数组中以常数时间运行,而Array.unshift()
则以线性时间运行[3]。
现在我想知道在dense arrays上,push
和unshift
是否具有相同的常数或线性时间复杂度。Firefox/Spidermonkey的实验结果证实了这一点:
现在我的问题:
- 是否有官方文档或参考资料证实了Firefox/Spidermonkey和Chrome/Node/V8的运行时性能?
- 为什么
unshift
没有像push
一样实现常数运行时(例如维护索引偏移量;类似于perl数组)?