Function versus Function.call versus Function.apply

JavaScript performance comparison

Revision 11 of this test case created by Emil

Preparation code


      
      <script>
Benchmark.prototype.setup = function() {
  var o = {
      f: function f(a, b, c) {
          return [a, b, c];
      }
  }, 
  d = "string", 
  e = 123, 
  f = ['a', 'r', 'r', 'a', 'y'],
  g = [d, e, f];

};
</script>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
Direct
o.f(d, e, f)
pending…
Call
o.f.call(o, d, e, f)
pending…
Apply
o.f.apply(o, [d, e, f])
pending…
Call, read from cashed array
o.f.call(o, g[0], g[1], g[2])
pending…
Apply, with cashed array
o.f.apply(o, g)
pending…
False optimisation
switch (g.length) {
 case 0:
  o.f.call(o);
  break;
 case 1:
  o.f.call(o, g[0]);
  break;
 case 2:
  o.f.call(o, g[0], g[1]);
  break;
 case 3:
  o.f.call(o, g[0], g[1], g[2]);
  break;
 default:
  o.f.apply(o, g);
}
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.

0 Comments