bind vs emulate

JavaScript performance comparison

Revision 5 of this test case created

Preparation code

 
<script>
Benchmark.prototype.setup = function() {
    Function.prototype.bind2 = function bind2( that ) {
        var target = this;
        if ( typeof target != "function" ) {
            throw new TypeError();
        }
        var args = slice.call( arguments, 1 );
        var bound = function () {
            if ( this instanceof bound ) {
                var F = function() {};
                F.prototype = target.prototype;
                var self = new F;
   
                var result = target.apply( self, args.concat( slice.call( arguments ) ) );
                if ( Object( result ) === result ) {
                    return result;
                }
                return self;
            } else {
                return target.apply( that, args.concat( slice.call( arguments ) ) );
            }
        };
        return bound;
    };
   
    var i = { i: 0 };
   
    var f = function () {
      this.i++;
    };
   
    var binded = f.bind(i);
    var emulated = f.bind2(i);
};
</script>

Test runner

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

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
bind
binded();
pending…
emulate
emulated();
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