arguments.length (v3)

Revision 3 of this benchmark created by RubaXa on


Description

Arguments to array

  • for
  • for + cached length
  • for + cached length & new Array(length)
  • slice
  • cached slice
  • Array.form
  • Array.apply(null, arguments);

Setup

var arraySlice = [].slice;
    !Array.from && (Array.from = function (value) {
       return arraySlice.call(value);
    });

Test runner

Ready to run.

Testing in
TestOps/sec
for
var foo = function() {
  for (var a = [], i = 0; i < arguments.length; i++) {
    a[i] = arguments[i];
  }
  return a;
};

foo(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
ready
for + cached length
var foo = function() {
  for (var a = [], i= 0, length = arguments.length; i < length; i++) {
    a[i] = arguments[i];
  }
  return a;
};

foo(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
ready
for + cached length & new Array(length)
var foo = function() {
  var length = arguments.length, a  = new Array(length);

  for (var i = 0; i < length; i++) {
    a[i] = arguments[i];
  }

  return a;
};

foo(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
ready
slice
var foo = function() {
  return Array.prototype.slice.call(arguments, 0);
};

foo(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
ready
cached slice
var foo = function() {
  return arraySlice.call(arguments, 0);
};

foo(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
ready
Array.from
var foo = function() {
  return Array.from(arguments);
};

foo(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
ready
Array.apply(null, arguments);
var foo = function() {
  return Array.apply(null, arguments);
};

foo(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.

  • Revision 3: published by RubaXa on