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
Tests property access performance for objects constructed in various ways
class PredefinedProperties {
foo;
bar;
baz;
constructor(foo, bar, baz) {
this.foo = foo;
this.bar = bar;
this.baz = baz;
}
}
class OnlyConstructor {
constructor(foo, bar, baz) {
this.foo = foo;
this.bar = bar;
this.baz = baz;
}
}
const predefinedProperties = new PredefinedProperties(0, 0, 0);
const onlyConstructor = new OnlyConstructor(0, 0, 0);
const objectAtOnce = {foo: 0, bar: 0, baz: 0};
const objectIncrementally = {};
objectIncrementally.foo = 0;
objectIncrementally.bar = 0;
objectIncrementally.baz = 0;
let samples = [];
for (let i = 0; i < 1000; ++i) {
samples.push([~~(Math.random() * 100), ~~(Math.random() * 100), ~~(Math.random() * 100)]);
}
function test(obj) {
for (let i = 0; i < samples.length; ++i) {
const sample = samples[i];
obj.foo = obj.bar + obj.baz + sample[0];
obj.bar = obj.foo + obj.baz + sample[1];
obj.baz = obj.foo + obj.bar + sample[2];
}
}
Ready to run.
Test | Ops/sec | |
---|---|---|
Class with properties |
| ready |
Empty class |
| ready |
Object at once |
| ready |
Object incrementally |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.