为什么自定义数组比香草版本慢
Why is a custom Array slower than the vanilla version?
我对修改JavaScript内置数组类的不同方式的速度很好奇,所以我做了一个小测试:
http://jsperf.com/array-vs-custom-array比较了向Array添加remove函数的三种不同方式。使用Object.create()添加的remove()函数似乎比使用.call()或添加到Array.prototype的相同函数慢(在Chrome中约为90%)。它们都做同样的事情,实际上是相同的功能,所以我很好奇为什么会有速度差异。
我猜是函数查找时间加起来。
在第一种情况下,您已经查找了remove
的地址,因此调用该函数很简单。
Object.create()
方法必须首先查找Array.prototype
,然后在新对象的属性中找到它。
最后一个原型替换方法会导致对原型中的函数的查找时间。
我不确定如何测试这个假设,但我以前在优化一些python代码时看到过类似的情况。
相关文章:
- JS编译器/包管理器,用于版本控制
- jQuery-2.1.1.min.js或最新版本jQuery-2.13.min.js不会't支持'@
- Chrome加载旧版本的Javascript文件
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- 为什么jQuery 1.8不能在IE8和InternetExplorer9中使用?(截至2012年9月的IE9最新版本)
- 如何设置jsfiddle's的javascript版本
- 同一HTML页面中的两个不同版本的JQuery
- YouTube作为弹出窗口在桌面版本上播放,但不在移动设备上播放
- 有没有一种方法可以获得three.js的最小/lite版本
- Node和Nodejs版本不同
- 以ECMAScript 5及更高版本为目标时,八进制文字不可用
- 如何在HTML中指定Javascript的版本
- 注册组件的非角度和角度版本
- 浏览器是否持久缓存脚本元素的编译版本
- 如何确定相对较新版本的IE的高度和宽度(IE8不喜欢从JavaScript设置这种样式吗?
- 如何在IE8及以前版本中处理mousemove
- 使用香草JavaScript的脉冲效果
- 从自身的一个版本中创建新的JavaScript对象
- 香草JavaScript版本的jQuery .click
- 为什么自定义数组比香草版本慢