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 obj = {
_prop: 0
}
var obj1 = {
_prop: 0,
getProp: function() {
return this._prop;
},
setProp: function(value) {
this._prop = value;
}
};
var obj2 = {
_prop: 0,
get prop() {
return this._prop;
},
set prop(value) {
this._prop = value;
},
};
var obj3 = {
_prop: 0
}
Object.defineProperty(obj3, "prop", {
get: function() {
return this._prop;
},
set: function(val) {
this._prop = val;
}
});
var obj4 = {
_prop: 0
}
obj4.__defineGetter__("_prop", function() {
return this._prop;
});
obj4.__defineSetter__("_prop", function(val) {
this._prop = val;
});
var obj5 = {
_prop: 0,
prop: function(value) {
if(value) {
this._prop = value;
} else {
return this._prop;
}
}
};
var obj6 = {
prop: 0,
get: function(key) {
return this[key];
},
set: function(key, val) {
this[key] = val;
}
};
function get(obj, prop) {
return obj[prop];
}
function set(obj, prop, val) {
obj[prop] = val;
}
</script>Ready to run.
| Test | Ops/sec | |
|---|---|---|
| Methods | | ready |
| get / set | | ready |
| Object.defineProperty | | ready |
| __defineGetter__ | | ready |
| Property | | ready |
| Global get / set | | ready |
| Global set (direct get) | | ready |
| with hasOwnProperty check | | ready |
| single function | | ready |
| obj get/set | | ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.