为什么自定义数组比香草版本慢

Why is a custom Array slower than the vanilla version?

本文关键字:版本 香草 自定义 数组 为什么      更新时间:2023-09-26

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

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

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

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

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

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

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

我不确定如何测试这个假设,但我以前在优化一些python代码时看到过类似的情况。