Prototype vs Module pattern performance

JavaScript performance comparison

Revision 54 of this test case created by Aaron

Preparation code


      
      <script>
Benchmark.prototype.setup = function() {
  function TraditionalPrototypeClass() {
  }
  
  TraditionalPrototypeClass.prototype.foo = function() {
  };
  
  TraditionalPrototypeClass.prototype.bar = function() {
  };
  
  function ModulePatternClass() {
      this.foo = function() {
      };
      
      this.bar = function() {
      };
  }
  
  var ModuleCachePatternClass = (function () {
      function foo() {
      }
      
      function bar() {
      }
      
      return function () {
          this.foo = foo;
          this.bar = bar;
      };
  }());
  
  var standardObject = {
      foo: function(){
      },
      bar: function(){
      }
  };

};
</script>

Test runner

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

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
Prototypal
var o = new TraditionalPrototypeClass()
o.bar;
o.foo;
pending…
Module pattern
var o = new ModulePatternClass()
o.bar;
o.foo;
pending…
Module pattern with cached functions
var o = new ModuleCachePatternClass()
o.bar;
o.foo;
pending…
Use the right tool for the job
var o = standardObject;
o.bar;
o.foo;
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.

3 Comments

Montana Harkin commented :

Your "right tool" test case isn't actually creating a new object. See my revision.

aa commented :

AlexWindHope commented :

If your goal is to just have couple static stateless functions than nobody except maybe some beginners will actually create an object, also - this test isn't really correct cause even if you will use class or module you're unlikely going to allocate new object for each propertie read, overall this test is just an epic facepalm