Inheritance performance - method calls (v2)

Revision 2 of this benchmark created by kogarashisan1 on


Description

Accurate tests of JavaScript class inheritance models.

These tests aim to provide adequate and accurate results by modelind real-life application behaviour and avoiding common pitfalls. For source code and detailed explanation - please visit the repository:

https://github.com/kogarashisan/PerfTests

Tested libraries does not include Prototype or MooTools, cause they are slow. Ext.JS is not included, cause it affects results of other tests.

Preparation HTML

<script src="http://kogarashisan.github.io/PerfTests/export/dependencies-v1.js"></script>
<script src="http://kogarashisan.github.io/PerfTests/export/bundle-v1.js"></script>

Test runner

Ready to run.

Testing in
TestOps/sec
TypeScript
var instanceA = new TypeScriptChildA("a");
var instanceB = new TypeScriptChildB("b");
for (var i = 0; i < 100000; i++) {
    instanceA.method();
    instanceB.method();
}
ready
ClassManager / Browser / Monomorphic
var instanceA = new CMBrowserMonoChildA("a");
var instanceB = new CMBrowserMonoChildB("b");
for (var i = 0; i < 100000; i++) {
    instanceA.method();
    instanceB.method();
}
ready
ClassManager / Browser / Polymorphic
var instanceA = new CMBrowserPolyChildA("a");
var instanceB = new CMBrowserPolyChildB("b");
for (var i = 0; i < 100000; i++) {
    instanceA.method();
    instanceB.method();
}
ready
ClassManager / Server / Monomorphic / Full
var instanceA = new CMServerFullrefMonoChildA("a");
var instanceB = new CMServerFullrefMonoChildB("b");
for (var i = 0; i < 100000; i++) {
    instanceA.method();
    instanceB.method();
}
ready
ClassManager / Server / Monomorphic / Partial
var instanceA = new CMServerPartialrefMonoChildA("a");
var instanceB = new CMServerPartialrefMonoChildB("b");
for (var i = 0; i < 100000; i++) {
    instanceA.method();
    instanceB.method();
}
ready
ClassManager / Server / Polymorphic / Partial
var instanceA = new CMServerPartialrefPolyChildA("a");
var instanceB = new CMServerPartialrefPolyChildB("b");
for (var i = 0; i < 100000; i++) {
    instanceA.method();
    instanceB.method();
}
ready
DotNetWise inheritWith
var instanceA = new DNW_IW_ChildA("a");
var instanceB = new DNW_IW_ChildB("b");
for (var i = 0; i < 100000; i++) {
    instanceA.method();
    instanceB.method();
}
ready
DotNetWise fastClass
var instanceA = new DNW_FC_ChildA("a");
var instanceB = new DNW_FC_ChildB("b");
for (var i = 0; i < 100000; i++) {
    instanceA.method();
    instanceB.method();
}
ready
Fiber
var instanceA = new FiberChildA("a");
var instanceB = new FiberChildB("b");
for (var i = 0; i < 100000; i++) {
    instanceA.method();
    instanceB.method();
}
ready
John Resig
var instanceA = new JRChildA("a");
var instanceB = new JRChildB("b");
for (var i = 0; i < 100000; i++) {
    instanceA.method();
    instanceB.method();
}
ready
Native
var instanceA = new NativeChildA("a");
var instanceB = new NativeChildB("b");
for (var i = 0; i < 100000; i++) {
    instanceA.method();
    instanceB.method();
}
ready

Revisions

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

  • Revision 2: published by kogarashisan1 on
  • Revision 3: published by kogarashisan1 on
  • Revision 4: published by Billy Tetrud on
  • Revision 5: published by Billy Tetrud on
  • Revision 6: published by Billy Tetrud on
  • Revision 7: published by kogarashisan1 on
  • Revision 9: published by Aadit M Shah on
  • Revision 10: published by kogarashisan1 on
  • Revision 11: published by Enzo on
  • Revision 12: published by kogarashisan1 on