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
Testing various techniques for creating getters / setters in JavaScript.
<script>
var global = this;
(function() {
global.obj = {
_prop: 0
};
global.obj1 = {
_prop: 0,
getProp: function() {
return this._prop;
},
setProp: function(value) {
this._prop = value;
}
};
global.obj2 = {
_prop: 0,
get prop() {
return this._prop;
},
set prop(value) {
this._prop = value;
}
};
global.obj3 = {
_prop: 0
}
Object.defineProperty(global.obj3, "prop", {
get: function() {
return this._prop;
},
set: function(val) {
this._prop = val;
}
});
global.obj4 = {
_prop: 0
}
global.obj4.__defineGetter__("prop", function() {
return this._prop;
});
global.obj4.__defineSetter__("prop", function(val) {
this._prop = val;
});
})();
var numberArray = [3, 4, 2, 1, 6, 0, 7, 8, 5];
var idx = 0;
var longLivedArray = [];
// Try to optimize this, you dirty engine!
setTimeout(console.log.bind(console), 100000000, longLivedArray);
</script>
global.obj = {
prop: 0
};
longLivedArray.unshift(global.obj1.getProp(), global.obj2.prop, global.obj3.prop, global.obj4.prop, global.obj.prop);
// Limit data usage
longLivedArray.length = 32;
Ready to run.
Test | Ops/sec | |
---|---|---|
Methods |
| ready |
get / set |
| ready |
Object.defineProperty |
| ready |
__defineGetter__ |
| ready |
Property |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.