为什么自定义数组比vanilla版慢?

时间:2011-09-10 05:32:58

标签: javascript arrays performance

我很好奇修改JavaScript内置数组类的不同方法的速度,所以我做了一点测试:

http://jsperf.com/array-vs-custom-array

这比较了向Array添加remove函数的三种不同方法。使用Object.create()添加的remove()函数似乎比使用.call()的相同函数或添加到Array.prototype更慢(在Chrome中约为90%)。他们都做同样的事情,实际上是相同的功能,所以我很好奇为什么存在速度差异。

1 个答案:

答案 0 :(得分:0)

我的猜测是函数查找时间加起来。

在第一种情况下,您已经查找了remove的地址,因此调用该函数很简单。

Object.create()方法必须首先查看Array.prototype,然后在新对象的属性中找到它。

最后一个原型替换方法会导致原型中函数的查找时间。

我不确定如何测试这个假设,但在优化某些python代码之前我已经看过类似的东西。