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
var f = function() {
return this;
};
var that = {
f: f
};
var bound = f.bind(that);
var wrappedCall = function() {
f.call(that);
};
var slice = Array.prototype.slice;
Function.prototype.bind2 = function(_this) {
var _self = this;
var args = slice.call(arguments, 1);
if (args.length === 0) {
return function() {
if (arguments.length === 0) return _self.call(_this);
else if (arguments.length > 0) return _self.apply(_this, args);
}
}
return function() {
if (arguments.length === 0) return _self.apply(_this, args);
var a2 = args.contact(slice.call(arguments));
return _self.apply(_this, a2);
}
}
var bound2 = f.bind2(that);
var closureEval = genClosureEval(that,'f');
function genClosureEval(me, target){
var x;
eval('x = function(){return me.'+target+'()}')
return x;
}
function genClosureFunc(me, target){
return (new Function('me','return function(){return me.'+target+'();}'))(me);
}
var ClosureFunc = genClosureFunc(that,'f')
var name = 'f';
Ready to run.
Test | Ops/sec | |
---|---|---|
by string (indirect) |
| ready |
direct (local) |
| ready |
Wrapped Call |
| ready |
closureEval |
| ready |
bind |
| ready |
bind2 |
| ready |
by string |
| ready |
direct |
| ready |
apply |
| ready |
call |
| ready |
ClosureFunc |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.