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
<div></div>
<script>
var emulatebind = function (f, context) {
var curriedArgs = Array.prototype.slice.call(arguments, 2);
if (curriedArgs.length) {
return function () {
var allArgs = curriedArgs.slice(0);
for (var i = 0, n = arguments.length; i < n; ++i) {
allArgs.push(arguments[i]);
}
return f.apply(context, allArgs);
};
} else {
return createProxy(f, context);
}
};
var emulatebind_2 = function (f, context) {
if (arguments.length > 2) {
var curriedArgs = Array.apply(null, arguments).slice(2);
return function () {
var allArgs = curriedArgs.slice(0);
for (var i = 0, n = arguments.length; i < n; ++i) {
allArgs.push(arguments[i]);
}
return f.apply(context, allArgs);
};
} else {
return createProxy(f, context);
}
};
var emulatebind_3 = function (f, context) {
if (arguments.length > 2) {
var curriedArgs = Array.apply(null, arguments).slice(2);
return function () {
var numArgs = arguments.length;
if (numArgs == 0) return f.apply(context, curriedArgs);
return f.apply(context, curriedArgs.concat(
(numArgs == 1) ? [arguments[0]] : Array.apply(null, arguments)
));
};
} else {
return createProxy(f, context);
}
};
function createProxy(f, context) {
return function () {
return f.apply(context, arguments);
}
}
var i = { i: 0 };
var f = function () {
return this.i++;
};
function bind(fn, ctx) {
if(!fn.apply){
return fn.bind(ctx);
}
return function() {
return fn.apply(ctx, arguments);
};
}
</script>
var binded = f.bind(i);
var emulated = emulatebind(f, i);
var emulated_2 = emulatebind_2(f, i);
var emulated_3 = emulatebind_3(f, i);
var simple = bind(f, i);;
var self = function() {
return i.i++;
}
i.i = 0;
Ready to run.
Test | Ops/sec | |
---|---|---|
bind |
| ready |
emulate |
| ready |
simple |
| ready |
self |
| ready |
emulate_2 |
| ready |
emulate_3 |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.