Arguments De-Opt

Benchmark created by Malte Ubl on


Test runner

Ready to run.

Testing in
TestOps/sec
arguments appears
function test() {
  arguments;
  var sum = 0;
  for(var i = 0; i < 10000; i++) {
    for(var n = 0; n < 1000; n++) {
      sum += n;
    }
  }
}
test();
ready
Convert to array
function test() {
  var a = Array.prototype.slice.call(arguments);
  var sum = 0;
  for(var i = 0; i < 10000; i++) {
    for(var n = 0; n < 1000; n++) {
      sum += n;
    }
  }
}
test();
ready
Indexed access
function test() {
  var a = arguments[0];
  var sum = 0;
  for(var i = 0; i < 10000; i++) {
    for(var n = 0; n < 1000; n++) {
      sum += n;
    }
  }
}
test();
ready
access to callee
function test() {
  var fn = arguments.callee;
  var sum = 0;
  for(var i = 0; i < 10000; i++) {
    for(var n = 0; n < 1000; n++) {
      sum += n;
    }
  }
}
test();
ready
access to length
function test() {
  var num = arguments.length;
  var sum = 0;
  for(var i = 0; i < 10000; i++) {
    for(var n = 0; n < 1000; n++) {
      sum += n;
    }
  }
}
test();
ready
No arguments (reference)
function test() {
  var sum = 0;
  for(var i = 0; i < 10000; i++) {
    for(var n = 0; n < 1000; n++) {
      sum += n;
    }
  }
}
test();
ready
eval is here (reference)
function test() {
  eval('');
  var sum = 0;
  for(var i = 0; i < 10000; i++) {
    for(var n = 0; n < 1000; n++) {
      sum += n;
    }
  }
}
test();
ready

Revisions

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

  • Revision 1: published by Malte Ubl on