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 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);
function f1() {
}
f1.prototype.test = function() {
}
function f2() {
this.o = new f1();
}
f2.prototype.test = function() {
this.o.test();
}
function f3() {
this.o = new f2();
}
f3.prototype.test = function() {
this.o.test();
}
var o1 = new f1();
var o2 = new f2();
var o3 = new f3();
var bound3 = o1.test.bind(o1).bind(o2).bind(o3);
var obj3 = new f3();
var name = 'f';
Ready to run.
Test | Ops/sec | |
---|---|---|
direct |
| ready |
apply |
| ready |
call |
| ready |
bind |
| ready |
bind2 |
| ready |
by string |
| ready |
by string (indirect) |
| ready |
direct (local) |
| ready |
bound3 |
| ready |
direct (long chain) |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.