我刚刚偶然发现了这个 jsperf 结果:http://jsperf.com/delet-is-slow
它表明在 javascript 中使用 delete
很慢,但我不确定我明白为什么。 javascript 引擎在幕后做了什么使事情变慢?
最佳答案
我觉得问题不在于为什么删除慢...简单的删除操作的速度不值得衡量...
您显示的 JS 性能链接执行以下操作:
- 创建两个数组,每个数组包含 6 个元素。
- 删除一个数组的索引之一。
- 遍历每个数组的所有索引。
该脚本显示循环遍历应用了 delete 的数组比循环遍历普通数组慢。
您应该问问自己,为什么删除会使数组变慢?
引擎在内部将数组元素存储在连续的内存空间中,并使用数字索引器访问它们。
这就是他们所说的快速访问数组。
如果删除这个有序且连续的索引中的一个元素,就会强制数组变为字典模式...因此,之前元素在数组(索引器)中的确切位置成为键在数组必须在其下搜索元素的字典中。
所以迭代变得很慢,因为不再移动到内存中的下一个空间,而是一遍又一遍地执行哈希搜索。
关于javascript - 为什么 'delete' 在 javascript 中很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27397034/