Native bind vs jQuery.proxy vs Underscore bind vs custom bind

JavaScript performance comparison

Revision 23 of this test case created by Eric Pinxteren

Info

checking the option of a user defined bind, very much like the no bind option

Preparation code

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>
<script src="//underscorejs.org/underscore-min.js">
</script>

 
<script>
Benchmark.prototype.setup = function() {
    function myBind(func, val) {
      return function() {
        return func.apply(val, arguments);
      }
    }
   
    function addOne(val) {
      return this + val;
    }
   
    var nativeBinded = addOne.bind(1),
        customBinded = myBind(addOne, 1),
        widthoutBind = function (x) {
            addOne.call(1, x)
        };
};
</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
Native bind
var foo = (function(x) {
  return this + x;
}).bind(1);
foo(1);
pending…
jQuery.proxy
var foo = jQuery.proxy(function(x) {
  return this + x;
}, 1);
foo(1);
pending…
Underscore.js bind
var foo = _.bind(function(x) {
  return this + x;
}, 1);
foo(1)
pending…
Without bind
var bar = function(x) {
    return this + x;
    };
var foo = function(x) {
    bar.call(1, x);
    }
   
   
   
foo(1);
pending…
custom bind func
var bar = function(x) {
    return this + x;
    };
var foo = myBind(bar, 1);
foo(1);
pending…
Existing native bind
var foo = addOne.bind(1);
foo(1);
pending…
Existing custom bind func
var foo = myBind(addOne, 1);
foo(1);
pending…
Saved native bind
nativeBinded(1);
pending…
Saved custom bind
customBinded(1);
pending…
Saved without bind
widthoutBind(1);
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