Converting arguments to an array
JavaScript performance comparison
Preparation code
<script>
function arrayProtoSlice() {
return Array.prototype.slice.apply(arguments);
}
function arrayLiteralSlice() {
return [].slice.apply(arguments);
}
var slice = [].slice;
function closure() {
return slice.call(arguments);
}
function splice() {
return [].splice.call(arguments, 0);
}
function push() {
var x = [];
x.push.apply(x, arguments);
return x;
}
function unshift() {
var x = [];
x.unshift.apply(x, arguments);
return x;
}
var bigArray = ((new Array(1000)).join("a,") + "a").split(",");
unshift.apply(null, bigArray).length === bigArray.length || alert('unshift broken');
push.apply(null, bigArray).length === bigArray.length || alert('push broken');
splice.apply(null, bigArray).length === bigArray.length || alert('splice broken');
arrayProtoSlice.apply(null, bigArray).length === bigArray.length || alert('arrayProtoSlice broken');
arrayLiteralSlice.apply(null, bigArray).length === bigArray.length || alert('arrayLiteralSlice broken');
</script>
Test runner
Warning! For accurate results, please disable Firebug before running the tests. (Why?)
Java applet disabled.
| Test | Ops/sec | |
|---|---|---|
Array prototype slice |
|
pending… |
Array literal slice |
|
pending… |
Array push |
|
pending… |
Array splice |
|
pending… |
Unshift |
|
pending… |
Closure |
|
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
- Revision 2: published
- Revision 3: published
- Revision 4: published by tj
- Revision 5: published
- Revision 6: published
- Revision 7: published by damien maillard and last updated
- Revision 8: published by rektide
- Revision 9: published
- Revision 11: published by Charmander
- Revision 14: published
0 comments