javascript - 为什么自定义数组比普通版本慢?

标签 javascript arrays performance

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

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

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

最佳答案

我的猜测是函数查找时间会增加。

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

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

最后一个原型(prototype)替换方法会产生原型(prototype)中函数的查找时间。

我不确定如何检验这个假设,但我之前在优化一些 python 代码时见过类似的情况。

关于javascript - 为什么自定义数组比普通版本慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7369854/

相关文章:

javascript - 处理切换按钮上的焦点

javascript - 如果使用 grunt-contrib-imagemin 优化图像,如何处理 Handlebars 模板中的图像

c++ - 我写了一个程序来显示一个数组的内容,但它显示的是它的地址

javascript - 删除 array.slice 之后 array.join 中的持久逗号

php - 将 javascript 与 php 混合时的性能和缓存

mysql - 通过内连接优化 rand 性能

javascript - PerformanceResourceTiming.responseStart 和 PerformanceResourceTiming.requestStart 对于状态正常的 http 请求都是 0

javascript - 如何捕获 iframe 中下载的文件?

javascript - 如何使用 jQuery 在所有 Ajax 请求完成后执行操作

python - 生成非均匀随机数