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.