Add a property to an array
JavaScript performance comparison
Preparation code
<script>
function protoArray() {
var i = 0;
var a = [];
var p = {foo: 0};
p.__proto__ = Array.prototype;
a.__proto__ = p;
for (i = 0; i < 10000; i++) {
a[i] = i;
}
var sum = 0;
var l = a.length;
for (i = 0; i < l; i++) {
sum += a[i];
}
return sum;
}
function plainArray() {
var i = 0;
var a = [];
for (i = 0; i < 10000; i++) {
a[i] = i;
}
var sum = 0;
var l = a.length;
for (i = 0; i < l; i++) {
sum += a[i];
}
return sum;
}
function reservedArray() {
var i = 0;
var a = new Array(10000);
for (i = 0; i < 10000; i++) {
a[i] = i;
}
var sum = 0;
var l = a.length;
for (i = 0; i < l; i++) {
sum += a[i];
}
return sum;
}
function reservedArrayWithProperty() {
var i = 0;
var a = new Array(10000);
a.foo = 123;
for (i = 0; i < 10000; i++) {
a[i] = i;
}
var sum = 0;
var l = a.length;
for (i = 0; i < l; i++) {
sum += a[i];
}
return sum;
}
function arrayWithProperty() {
var i = 0;
var a = [];
a.foo = 123;
for (i = 0; i < 10000; i++) {
a[i] = i;
}
var sum = 0;
var l = a.length;
for (i = 0; i < l; i++) {
sum += a[i];
}
return sum;
}
function objectWithProperty() {
var i = 0;
var a = {};
a.foo = 123;
for (i = 0; i < 10000; i++) {
a[i] = i;
}
var sum = 0;
var l = a.length;
for (i = 0; i < l; i++) {
sum += a[i];
}
return sum;
}
</script>
Test runner
Warning! For accurate results, please disable Firebug before running the tests. (Why?)
Java applet disabled.
| Test | Ops/sec | |
|---|---|---|
Plain array |
|
pending… |
Object used as array with property |
|
pending… |
Initialized array |
|
pending… |
Array with property |
|
pending… |
Initialized array with property |
|
pending… |
Property on the prototype |
|
pending… |
Compare results of other browsers
Revisions
You can edit these tests or add even more tests to this page by appending /edit to the URL. Here’s a list of current revisions for this page:
- Revision 1: published by Erik Corry
- Revision 2: published
- Revision 3: published by Erik Corry
1 comment
"Chrome 18.0.1025" is actually Chrome on Android.