Prototype vs Module pattern performance

JavaScript performance comparison

Revision 128 of this test case created by mog


Removed iterations in tests, because jsperf already does that for us. And renamed variables to be more meaningful to us humans. And other cosmetic changes.

The most important thing to remember is to use the right tool for the job. All these tests do is reference an object with a complex memory allocation. When you don't need something fancy, you're better off using a regular old object

Preparation code

function TraditionalPrototypeClass() {} = function() {}; = function() {};

function ModulePatternClass() { = function() {}; = function() {};

function ModulePatternClassIndirect() {
  function foo() {};

  function bar() {};
  return {
    foo: foo,
    bar: bar

//no var, so we can access it in the tests
var testProto = new TraditionalPrototypeClass(),
  testModule = new ModulePatternClass(),
  testModuleIndirect = ModulePatternClassIndirect();
Benchmark.prototype.setup = function() {

Test runner

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

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
var o = new TraditionalPrototypeClass();;
Module pattern
var o = new ModulePatternClass();;
Module pattern Indirect
var o = new ModulePatternClassIndirect();;
Retrieval - Proto;;
Retrieval - Module;;
Retrieval - Module Pattern;;

Compare results of other browsers


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:

1 comment

mog (revision owner) commented :

Testing another form of module pattern, that uses return instead of scoping on this.

Comment form temporarily disabled.

Add a comment