将参数添加到'自变量'类数组对象,性能测试
Add argument to 'arguments' array-like object, performance test
你好,我做了一些简单的测试:在javascript:中向参数数组添加参数的更好方法
这表明使用Array.prototype.push.call大约慢3倍(chrome),为什么?
http://jsfiddle.net/vhrs56nm/
function test() {
Array.prototype.push.call(arguments, 123);
}
function test2() {
arguments[arguments.length] = 123;
arguments.length++;
}
console.time("test1");
for ( var i=0; i<1000000; i++ ) {
test(1,2,3);
}
console.timeEnd("test1");
console.time("test2");
for ( var i=0; i<1000000; i++ ) {
test2(1,2,3);
}
console.timeEnd("test2");
Array.prototype.push.call
大约慢3倍(chrome),为什么?
因为
- 这是一个函数调用(实际上是两个),而且这些调用仍然需要一些代价
- 传递
arguments
需要对象的具体化,这会扼杀优化 - 执行死代码消除更为复杂
相关文章:
- 将数组对象传递到struts2中的操作类
- 如何使用jquery返回php-json数组对象
- 从其名称获取javascript数组对象
- 值未与数组对象绑定
- 如何按数组/对象值的倍数过滤对象数组
- 在表中显示数组对象
- 在数组对象中分组
- 将第二个或多个数组推送到数组对象 AngularJS 中
- 重新排列 JavaScript 数组/对象
- 键上的javascript数组对象过滤器
- handontable:在不更改数据数组/对象的情况下隐藏某些列
- 用于跟踪购物车可用性的Javascript数组/对象/哈希表
- 重建有角度的java脚本数组对象
- 对JSON数组对象进行排序
- 连接与数组对象相关的文本:方式和位置
- 哪些浏览器和版本支持将常见的类数组对象直接传递到fn.apply()
- 如何使用Handlebars循环数组对象和模板
- 是否可以引用JS数组/对象中的另一个元素
- Javascript中的名称索引-数组/对象
- 数组长度不等于数组对象