Object.create() vs. constructor vs. object literal

JavaScript performance comparison

Revision 53 of this test case created

Preparation code

<script>
  var o;

  var Obj = function() {
   this.p = 1;
  };

Obj.prototype = {
        method1: function(){},
        method2: function(){},
        method3: function(){},
        method4: function(){},
        method5: function(){},
        method6: function(){},
        method7: function(){},
        method8: function(){},
        method9: function(){},
        method10: function(){},
        method11: function(){},
        method12: function(){},
        method13: function(){},
        method14: function(){},
        method15: function(){},
        method16: function(){},
        method17: function(){},
        method18: function(){},
        method19: function(){},
        method20: function(){}
}

  var Obj2 = function() {
   this.p = 1;
  };

Obj2.prototype.method1 = function(){};
Obj2.prototype.method2 = function(){};
Obj2.prototype.method3 = function(){};
Obj2.prototype.method4 = function(){};
Obj2.prototype.method5 = function(){};
Obj2.prototype.method6 = function(){};
Obj2.prototype.method7 = function(){};
Obj2.prototype.method8 = function(){};
Obj2.prototype.method9 = function(){};
Obj2.prototype.method10 = function(){};
Obj2.prototype.method11 = function(){};
Obj2.prototype.method12 = function(){};
Obj2.prototype.method13 = function(){};
Obj2.prototype.method14 = function(){};
Obj2.prototype.method15 = function(){};
Obj2.prototype.method16 = function(){};
Obj2.prototype.method17 = function(){};
Obj2.prototype.method18 = function(){};
Obj2.prototype.method19 = function(){};
Obj2.prototype.method20 = function(){};
 
  var propObj = {
   p: {
    value: 1,
        method1: function(){},
        method2: function(){},
        method3: function(){},
        method4: function(){},
        method5: function(){},
        method6: function(){},
        method7: function(){},
        method8: function(){},
        method9: function(){},
        method10: function(){},
        method11: function(){},
        method12: function(){},
        method13: function(){},
        method14: function(){},
        method15: function(){},
        method16: function(){},
        method17: function(){},
        method18: function(){},
        method19: function(){},
        method20: function(){}
   }
  };
 
  var protoObj = {p: 1};
 
  function object(o) {
      function F() {}
      F.prototype = o;
      return new F();
  }
</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
Object.create() using in-place property object
o = Object.create(Object.prototype, {
 p: {
  value: 1
 }
});
pending…
Object.create() using pre-defined property object
o = Object.create(Object.prototype, propObj);
pending…
Constructor function
o = new Obj();
pending…
Object.create() using in-place prototype object
o = Object.create({p: 1});
pending…
Object.create() using pre-defined prototype object
o = Object.create(protoObj);
pending…
Crockford method using in-place prototype object
o = object({p: 1});
pending…
Crockford method using pre-defined prototype object
o = object(protoObj);
pending…
Object literal
o = {p: 1};
pending…
Common constructor-style
o = new Obj2();
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