Prototype vs Module pattern performance (v204)

Revision 204 of this benchmark created on


Setup

Klass1 = function() {};
    Klass1.prototype.foo = function() {
      log("foo");
    };
    Klass1.prototype.bar = function() {
      log("bar");
    };
    Klass2 = function() {
      return {
        foo: function() {
          log("foo");
        },
        bar: function() {
          log("bar");
        }
      };
    };
    var FooFunction = function() {
      log("foo");
    }, BarFunction = function() {
        log("bar");
      };
    Klass3 = function() {
      return {
        foo: FooFunction,
        bar: BarFunction
      };
    };

Test runner

Ready to run.

Testing in
TestOps/sec
Prototypal
for (var i = 1E3, objs = []; i--;) {
  var o = new Klass1;
  objs.push(new Klass1);
  o.bar;
  o.foo;
}
ready
Module pattern
for (var i = 1E3, objs = []; i--;) {
  var o = new Klass2;
  objs.push(new Klass2);
  o.bar;
  o.foo;
}
ready
Module pattern with cached functions
for (var i = 1E3, objs = []; i--;) {
  var o = new Klass3;
  objs.push(new Klass3);
  o.bar;
  o.foo;
}
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.