Converting arguments to an array
JavaScript performance comparison
Preparation code
<script>
function push() {
var x = [];
x.push.apply(x, arguments);
return x;
}
function unshift() {
var x = [];
x.unshift.apply(x, arguments);
return x;
}
function _callPush(args) {
var x = [];
x.push.apply(x, args);
return x;
}
function callPush() {
return _callPush(arguments);
}
function _callUnshift(args) {
var x = [];
x.unshift.apply(x, args);
return x;
}
function callUnshift(args) {
return _callUnshift(arguments);
}
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');
callPush.apply(null, bigArray).length === bigArray.length || alert('callPush broken');
callUnshift.apply(null, bigArray).length === bigArray.length || alert('callUnshift broken');
</script>
Test runner
Warning! For accurate results, please disable Firebug before running the tests. (Why?)
Java applet disabled.
| Test | Ops/sec | |
|---|---|---|
Push |
|
pending… |
Push w/fn call |
|
pending… |
Unshift |
|
pending… |
Unshift w/fn call |
|
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