jsPerf.app is an online JavaScript performance benchmark test runner & jsperf.com mirror. It is a complete rewrite in homage to the once excellent jsperf.com now with hopefully a more modern & maintainable codebase.
jsperf.com URLs are mirrored at the same path, e.g:
https://jsperf.com/negative-modulo/2
Can be accessed at:
https://jsperf.app/negative-modulo/2
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
function TraditionalPrototypeClass() {
}
TraditionalPrototypeClass.prototype.foo = function() {
console.log('a');
};
TraditionalPrototypeClass.prototype.bar = function() {
console.log('b');
};
function ModulePatternClass() {
this.foo = function() {
console.log('a');
};
this.bar = function() {
console.log('b');
};
}
var ModuleCachePatternClass = (function () {
function foo() {
console.log('a');
}
function bar() {
console.log('b');
}
return function () {
this.foo = foo;
this.bar = bar;
};
}());
function TraditionalObject() {
this.foo = function () {
console.log('a');
}
this.bar = function () {
console.log('b');
}
}
function FakeClass() {
function __constructor() {
this.init();
}
__constructor.prototype.init = function() {
};
__constructor.prototype.foo = function(){
console.log('a');
};
__constructor.prototype.bar = function(){
console.log('a');
};
return new __constructor();
}
function FakeClassNoInit() {
function __constructor() {
}
__constructor.prototype.foo = function(){
console.log('a');
};
__constructor.prototype.bar = function(){
console.log('a');
};
return new __constructor();
}
Ready to run.
Test | Ops/sec | |
---|---|---|
Traditional Prototypal Class |
| ready |
Module Pattern Class |
| ready |
Module Pattern Class with cached functions |
| ready |
Traditional Class |
| ready |
Fake Class |
| ready |
Fake Class without init |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.