Native bind vs jQuery.proxy vs Underscore bind

JavaScript performance comparison

Revision 46 of this test case created

Preparation code

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore-min.js">
</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);
var sum;
for (var i = 0; i < 1000; ++i)
  sum += foo(i);
foo(sum);
pending…
jQuery.proxy
var foo = jQuery.proxy(function(x) {
  return this + x;
}, 1);
var sum;
for (var i = 0; i < 1000; ++i)
  sum += foo(i);
foo(sum);
pending…
Underscore.js bind
var foo = _.bind(function(x) {
  return this + x;
}, 1);
var sum;
for (var i = 0; i < 1000; ++i)
  sum += foo(i);
foo(sum);
pending…
Without bind
var bar = function(x) {
  return this + x;
};
var foo = function(x) {
  bar.call(1, x);
}
var sum;
for (var i = 0; i < 1000; ++i)
  sum += foo(i);
foo(sum);
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