Prototype vs Module pattern performance (v200)

Revision 200 of this benchmark created by Joe on


Preparation HTML

<script>
Klass1 = function(a) {
  this.a = a;
}
Klass1.prototype.foo = function() {
  log('foo');
}
Klass1.prototype.bar = function() {
  log('bar');
}
Klass2 = function(a) {
  var foo = function() {
    log('foo');
  },
    bar = function() {
      log('bar');
    };
  return {
    foo: foo,
    bar: bar,
    a: a
  }
}
Klass3 = function(a) {
  return {
    foo: function() {
      log('foo')
    },
    bar: function() {
      log('bar')
    },
    a: a
  }
}

var FooFunction = function() {
  log('foo');
};
var BarFunction = function() {
  log('bar');
};
Klass4 = function(a) {
  return {
    foo: FooFunction,
    bar: BarFunction,
    a: a
  }
}
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
Prototypal
var o = new Klass1();
o.bar;
o.foo;
ready
Module pattern
var o = Klass2();
o.bar;
o.foo;
ready
Module pattern without intermediate vars
var o = Klass3()
o.bar;
o.foo;
ready
Module pattern with cached functions
var o = Klass4()
o.bar;
o.foo;
ready

Revisions

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