Proxy

JavaScript performance comparison

Revision 2 of this test case created

Info

jQuery's proxy, vs a function wrapping .apply()

Preparation code

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
var  interval,
     count = 0,
     scoped = {count:0};

function add(nb, string) {
  this.count+=nb;
}

function proxy(fn, context) {
  return function() { return fn.apply(context, Array.prototype.slice.call(arguments, 2));}
};

function proxy2(fn, context, args) {
  if(args) {
    return function(){
      fn.apply(context, Array.prototype.slice.call(arguments, 2));
    }
  } else {
    return function(){
      fn.apply(context);
    }
  }
};
</script>
<script>
Benchmark.prototype.teardown = function() {
    if(count > 0) {
      console.log("proxy isn't working as it should!");
    }
};
</script>

Preparation code output

Test runner

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

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
jQuery's proxy
$.proxy(add, scoped, 1, "jproxy")();
pending…
Apply - no-args with arguments
proxy(add, scoped, 1, "sproxy")();
pending…
Apply - args with arguments
proxy2(add, scoped, 1, "sproxy")();
pending…
Apply - no-args without arguments
proxy(add, scoped)();
pending…
Apply - args without arguments
proxy2(add, scoped)();
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:

0 comments

Add a comment