我很好奇修改JavaScript内置数组类的不同方法的速度,所以我做了一点测试:
http://jsperf.com/array-vs-custom-array
这比较了向Array添加remove函数的三种不同方法。使用Object.create()添加的remove()函数似乎比使用.call()的相同函数或添加到Array.prototype更慢(在Chrome中约为90%)。他们都做同样的事情,实际上是相同的功能,所以我很好奇为什么存在速度差异。
答案 0 :(得分:0)
我的猜测是函数查找时间加起来。
在第一种情况下,您已经查找了remove
的地址,因此调用该函数很简单。
Object.create()
方法必须首先查看Array.prototype
,然后在新对象的属性中找到它。
最后一个原型替换方法会导致原型中函数的查找时间。
我不确定如何测试这个假设,但在优化某些python代码之前我已经看过类似的东西。