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
Split an Array into chunks. Pure-javascript solution vs. Underscore.
<script src="https://raw.github.com/andrewplummer/Sugar/master/release/sugar-1.1.3.min.js" type="text/javascript"></script>
<script>
// Underscore.js 1.2.3
// (c) 2009-2011 Jeremy Ashkenas, DocumentCloud Inc.
// Underscore is freely distributable under the MIT license.
// Portions of Underscore are inspired or borrowed from Prototype,
// Oliver Steele's Functional, and John Resig's Micro-Templating.
// For all details and documentation:
// http://documentcloud.github.com/underscore
(function() {
function r(a, c, d) {
if (a === c) return a !== 0 || 1 / a == 1 / c;
if (a == null || c == null) return a === c;
if (a._chain) a = a._wrapped;
if (c._chain) c = c._wrapped;
if (a.isEqual && b.isFunction(a.isEqual)) return a.isEqual(c);
if (c.isEqual && b.isFunction(c.isEqual)) return c.isEqual(a);
var e = l.call(a);
if (e != l.call(c)) return false;
switch (e) {
case "[object String]":
return a == String(c);
case "[object Number]":
return a != +a ? c != +c : a == 0 ? 1 / a == 1 / c : a == +c;
case "[object Date]":
case "[object Boolean]":
return +a == +c;
case "[object RegExp]":
return a.source == c.source && a.global == c.global && a.multiline == c.multiline && a.ignoreCase == c.ignoreCase
}
if (typeof a != "object" || typeof c != "object") return false;
for (var f = d.length; f--;) if (d[f] == a) return true;
d.push(a);
var f = 0,
g = true;
if (e == "[object Array]") {
if (f = a.length, g = f == c.length) for (; f--;) if (!(g = f in a == f in c && r(a[f], c[f], d))) break
} else {
if ("constructor" in a != "constructor" in c || a.constructor != c.constructor) return false;
for (var h in a) if (m.call(a, h) && (f++, !(g = m.call(c, h) && r(a[h], c[h], d)))) break;
if (g) {
for (h in c) if (m.call(c, h) && !f--) break;
g = !f
}
}
d.pop();
return g
}
var s = this,
F = s._,
o = {},
k = Array.prototype,
p = Object.prototype,
i = k.slice,
G = k.concat,
H = k.unshift,
l = p.toString,
m = p.hasOwnProperty,
v = k.forEach,
w = k.map,
x = k.reduce,
y = k.reduceRight,
z = k.filter,
A = k.every,
B = k.some,
q = k.indexOf,
C = k.lastIndexOf,
p = Array.isArray,
I = Object.keys,
t = Function.prototype.bind,
b = function(a) {
return new n(a)
};
if (typeof exports !== "undefined") {
if (typeof module !== "undefined" && module.exports) exports = module.exports = b;
exports._ = b
} else typeof define === "function" && define.amd ? define("underscore", function() {
return b
}) : s._ = b;
b.VERSION = "1.2.3";
var j = b.each = b.forEach = function(a, c, b) {
if (a != null) if (v && a.forEach === v) a.forEach(c, b);
else if (a.length === +a.length) for (var e = 0, f = a.length; e < f; e++) {
if (e in a && c.call(b, a[e], e, a) === o) break
} else for (e in a) if (m.call(a, e) && c.call(b, a[e], e, a) === o) break
};
b.map = function(a, c, b) {
var e = [];
if (a == null) return e;
if (w && a.map === w) return a.map(c, b);
j(a, function(a, g, h) {
e[e.length] = c.call(b, a, g, h)
});
return e
};
b.reduce = b.foldl = b.inject = function(a, c, d, e) {
var f = arguments.length > 2;
a == null && (a = []);
if (x && a.reduce === x) return e && (c = b.bind(c, e)), f ? a.reduce(c, d) : a.reduce(c);
j(a, function(a, b, i) {
f ? d = c.call(e, d, a, b, i) : (d = a, f = true)
});
if (!f) throw new TypeError("Reduce of empty array with no initial value");
return d
};
b.reduceRight = b.foldr = function(a, c, d, e) {
var f = arguments.length > 2;
a == null && (a = []);
if (y && a.reduceRight === y) return e && (c = b.bind(c, e)), f ? a.reduceRight(c, d) : a.reduceRight(c);
var g = b.toArray(a).reverse();
e && !f && (c = b.bind(c, e));
return f ? b.reduce(g, c, d, e) : b.reduce(g, c)
};
b.find = b.detect = function(a, c, b) {
var e;
D(a, function(a, g, h) {
if (c.call(b, a, g, h)) return e = a, true
});
return e
};
b.filter = b.select = function(a, c, b) {
var e = [];
if (a == null) return e;
if (z && a.filter === z) return a.filter(c, b);
j(a, function(a, g, h) {
c.call(b, a, g, h) && (e[e.length] = a)
});
return e
};
b.reject = function(a, c, b) {
var e = [];
if (a == null) return e;
j(a, function(a, g, h) {
c.call(b, a, g, h) || (e[e.length] = a)
});
return e
};
b.every = b.all = function(a, c, b) {
var e = true;
if (a == null) return e;
if (A && a.every === A) return a.every(c, b);
j(a, function(a, g, h) {
if (!(e = e && c.call(b, a, g, h))) return o
});
return e
};
var D = b.some = b.any = function(a, c, d) {
c || (c = b.identity);
var e = false;
if (a == null) return e;
if (B && a.some === B) return a.some(c, d);
j(a, function(a, b, h) {
if (e || (e = c.call(d, a, b, h))) return o
});
return !!e
};
b.include = b.contains = function(a, c) {
var b = false;
if (a == null) return b;
return q && a.indexOf === q ? a.indexOf(c) != -1 : b = D(a, function(a) {
return a === c
})
};
b.invoke = function(a, c) {
var d = i.call(arguments, 2);
return b.map(a, function(a) {
return (c.call ? c || a : a[c]).apply(a, d)
})
};
b.pluck = function(a, c) {
return b.map(a, function(a) {
return a[c]
})
};
b.max = function(a, c, d) {
if (!c && b.isArray(a)) return Math.max.apply(Math, a);
if (!c && b.isEmpty(a)) return -Infinity;
var e = {
computed: -Infinity
};
j(a, function(a, b, h) {
b = c ? c.call(d, a, b, h) : a;
b >= e.computed && (e = {
value: a,
computed: b
})
});
return e.value
};
b.min = function(a, c, d) {
if (!c && b.isArray(a)) return Math.min.apply(Math, a);
if (!c && b.isEmpty(a)) return Infinity;
var e = {
computed: Infinity
};
j(a, function(a, b, h) {
b = c ? c.call(d, a, b, h) : a;
b < e.computed && (e = {
value: a,
computed: b
})
});
return e.value
};
b.shuffle = function(a) {
var c = [],
b;
j(a, function(a, f) {
f == 0 ? c[0] = a : (b = Math.floor(Math.random() * (f + 1)), c[f] = c[b], c[b] = a)
});
return c
};
b.sortBy = function(a, c, d) {
return b.pluck(b.map(a, function(a, b, g) {
return {
value: a,
criteria: c.call(d, a, b, g)
}
}).sort(function(a, c) {
var b = a.criteria,
d = c.criteria;
return b < d ? -1 : b > d ? 1 : 0
}), "value")
};
b.groupBy = function(a, c) {
var d = {},
e = b.isFunction(c) ? c : function(a) {
return a[c]
};
j(a, function(a, b) {
var c = e(a, b);
(d[c] || (d[c] = [])).push(a)
});
return d
};
b.sortedIndex = function(a, c, d) {
d || (d = b.identity);
for (var e = 0, f = a.length; e < f;) {
var g = e + f >> 1;
d(a[g]) < d(c) ? e = g + 1 : f = g
}
return e
};
b.toArray = function(a) {
return !a ? [] : a.toArray ? a.toArray() : b.isArray(a) ? i.call(a) : b.isArguments(a) ? i.call(a) : b.values(a)
};
b.size = function(a) {
return b.toArray(a).length
};
b.first = b.head = function(a, b, d) {
return b != null && !d ? i.call(a, 0, b) : a[0]
};
b.initial = function(a, b, d) {
return i.call(a, 0, a.length - (b == null || d ? 1 : b))
};
b.last = function(a, b, d) {
return b != null && !d ? i.call(a, Math.max(a.length - b, 0)) : a[a.length - 1]
};
b.rest = b.tail = function(a, b, d) {
return i.call(a, b == null || d ? 1 : b)
};
b.compact = function(a) {
return b.filter(a, function(a) {
return !!a
})
};
b.flatten = function(a, c) {
return b.reduce(a, function(a, e) {
if (b.isArray(e)) return a.concat(c ? e : b.flatten(e));
a[a.length] = e;
return a
}, [])
};
b.without = function(a) {
return b.difference(a, i.call(arguments, 1))
};
b.uniq = b.unique = function(a, c, d) {
var d = d ? b.map(a, d) : a,
e = [];
b.reduce(d, function(d, g, h) {
if (0 == h || (c === true ? b.last(d) != g : !b.include(d, g))) d[d.length] = g, e[e.length] = a[h];
return d
}, []);
return e
};
b.union = function() {
return b.uniq(b.flatten(arguments, true))
};
b.intersection = b.intersect = function(a) {
var c = i.call(arguments, 1);
return b.filter(b.uniq(a), function(a) {
return b.every(c, function(c) {
return b.indexOf(c, a) >= 0
})
})
};
b.difference = function(a) {
var c = b.flatten(i.call(arguments, 1));
return b.filter(a, function(a) {
return !b.include(c, a)
})
};
b.zip = function() {
for (var a = i.call(arguments), c = b.max(b.pluck(a, "length")), d = Array(c), e = 0; e < c; e++) d[e] = b.pluck(a, "" + e);
return d
};
b.indexOf = function(a, c, d) {
if (a == null) return -1;
var e;
if (d) return d = b.sortedIndex(a, c), a[d] === c ? d : -1;
if (q && a.indexOf === q) return a.indexOf(c);
for (d = 0, e = a.length; d < e; d++) if (d in a && a[d] === c) return d;
return -1
};
b.lastIndexOf = function(a, b) {
if (a == null) return -1;
if (C && a.lastIndexOf === C) return a.lastIndexOf(b);
for (var d = a.length; d--;) if (d in a && a[d] === b) return d;
return -1
};
b.range = function(a, b, d) {
arguments.length <= 1 && (b = a || 0, a = 0);
for (var d = arguments[2] || 1, e = Math.max(Math.ceil((b - a) / d), 0), f = 0, g = Array(e); f < e;) g[f++] = a, a += d;
return g
};
var E = function() {};
b.bind = function(a, c) {
var d, e;
if (a.bind === t && t) return t.apply(a, i.call(arguments, 1));
if (!b.isFunction(a)) throw new TypeError;
e = i.call(arguments, 2);
return d = function() {
if (!(this instanceof d)) return a.apply(c, e.concat(i.call(arguments)));
E.prototype = a.prototype;
var b = new E,
g = a.apply(b, e.concat(i.call(arguments)));
return Object(g) === g ? g : b
}
};
b.bindAll = function(a) {
var c = i.call(arguments, 1);
c.length == 0 && (c = b.functions(a));
j(c, function(c) {
a[c] = b.bind(a[c], a)
});
return a
};
b.memoize = function(a, c) {
var d = {};
c || (c = b.identity);
return function() {
var b = c.apply(this, arguments);
return m.call(d, b) ? d[b] : d[b] = a.apply(this, arguments)
}
};
b.delay = function(a, b) {
var d = i.call(arguments, 2);
return setTimeout(function() {
return a.apply(a, d)
}, b)
};
b.defer = function(a) {
return b.delay.apply(b, [a, 1].concat(i.call(arguments, 1)))
};
b.throttle = function(a, c) {
var d, e, f, g, h, i = b.debounce(function() {
h = g = false
}, c);
return function() {
d = this;
e = arguments;
var b;
f || (f = setTimeout(function() {
f = null;
h && a.apply(d, e);
i()
}, c));
g ? h = true : a.apply(d, e);
i();
g = true
}
};
b.debounce = function(a, b) {
var d;
return function() {
var e = this,
f = arguments;
clearTimeout(d);
d = setTimeout(function() {
d = null;
a.apply(e, f)
}, b)
}
};
b.once = function(a) {
var b = false,
d;
return function() {
if (b) return d;
b = true;
return d = a.apply(this, arguments)
}
};
b.wrap = function(a, b) {
return function() {
var d = G.apply([a], arguments);
return b.apply(this, d)
}
};
b.compose = function() {
var a = arguments;
return function() {
for (var b = arguments, d = a.length - 1; d >= 0; d--) b = [a[d].apply(this, b)];
return b[0]
}
};
b.after = function(a, b) {
return a <= 0 ? b() : function() {
if (--a < 1) return b.apply(this, arguments)
}
};
b.keys = I ||
function(a) {
if (a !== Object(a)) throw new TypeError("Invalid object");
var b = [],
d;
for (d in a) m.call(a, d) && (b[b.length] = d);
return b
};
b.values = function(a) {
return b.map(a, b.identity)
};
b.functions = b.methods = function(a) {
var c = [],
d;
for (d in a) b.isFunction(a[d]) && c.push(d);
return c.sort()
};
b.extend = function(a) {
j(i.call(arguments, 1), function(b) {
for (var d in b) b[d] !== void 0 && (a[d] = b[d])
});
return a
};
b.defaults = function(a) {
j(i.call(arguments, 1), function(b) {
for (var d in b) a[d] == null && (a[d] = b[d])
});
return a
};
b.clone = function(a) {
return !b.isObject(a) ? a : b.isArray(a) ? a.slice() : b.extend({}, a)
};
b.tap = function(a, b) {
b(a);
return a
};
b.isEqual = function(a, b) {
return r(a, b, [])
};
b.isEmpty = function(a) {
if (b.isArray(a) || b.isString(a)) return a.length === 0;
for (var c in a) if (m.call(a, c)) return false;
return true
};
b.isElement = function(a) {
return !!(a && a.nodeType == 1)
};
b.isArray = p ||
function(a) {
return l.call(a) == "[object Array]"
};
b.isObject = function(a) {
return a === Object(a)
};
b.isArguments = function(a) {
return l.call(a) == "[object Arguments]"
};
if (!b.isArguments(arguments)) b.isArguments = function(a) {
return !(!a || !m.call(a, "callee"))
};
b.isFunction = function(a) {
return l.call(a) == "[object Function]"
};
b.isString = function(a) {
return l.call(a) == "[object String]"
};
b.isNumber = function(a) {
return l.call(a) == "[object Number]"
};
b.isNaN = function(a) {
return a !== a
};
b.isBoolean = function(a) {
return a === true || a === false || l.call(a) == "[object Boolean]"
};
b.isDate = function(a) {
return l.call(a) == "[object Date]"
};
b.isRegExp = function(a) {
return l.call(a) == "[object RegExp]"
};
b.isNull = function(a) {
return a === null
};
b.isUndefined = function(a) {
return a === void 0
};
b.noConflict = function() {
s._ = F;
return this
};
b.identity = function(a) {
return a
};
b.times = function(a, b, d) {
for (var e = 0; e < a; e++) b.call(d, e)
};
b.escape = function(a) {
return ("" + a).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'").replace(/\//g, "/")
};
b.mixin = function(a) {
j(b.functions(a), function(c) {
J(c, b[c] = a[c])
})
};
var K = 0;
b.uniqueId = function(a) {
var b = K++;
return a ? a + b : b
};
b.templateSettings = {
evaluate: /<%([\s\S]+?)%>/g,
interpolate: /<%=([\s\S]+?)%>/g,
escape: /<%-([\s\S]+?)%>/g
};
b.template = function(a, c) {
var d = b.templateSettings,
d = "var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('" + a.replace(/\\/g, "\\\\").replace(/'/g, "\\'").replace(d.escape, function(a, b) {
return "',_.escape(" + b.replace(/\\'/g, "'") + "),'"
}).replace(d.interpolate, function(a, b) {
return "'," + b.replace(/\\'/g, "'") + ",'"
}).replace(d.evaluate || null, function(a, b) {
return "');" + b.replace(/\\'/g, "'").replace(/[\r\n\t]/g, " ") + ";__p.push('"
}).replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace(/\t/g, "\\t") + "');}return __p.join('');",
e = new Function("obj", "_", d);
return c ? e(c, b) : function(a) {
return e.call(this, a, b)
}
};
var n = function(a) {
this._wrapped = a
};
b.prototype = n.prototype;
var u = function(a, c) {
return c ? b(a).chain() : a
},
J = function(a, c) {
n.prototype[a] = function() {
var a = i.call(arguments);
H.call(a, this._wrapped);
return u(c.apply(b, a), this._chain)
}
};
b.mixin(b);
j("pop,push,reverse,shift,sort,splice,unshift".split(","), function(a) {
var b = k[a];
n.prototype[a] = function() {
b.apply(this._wrapped, arguments);
return u(this._wrapped, this._chain)
}
});
j(["concat", "join", "slice"], function(a) {
var b = k[a];
n.prototype[a] = function() {
return u(b.apply(this._wrapped, arguments), this._chain)
}
});
n.prototype.chain = function() {
this._chain = true;
return this
};
n.prototype.value = function() {
return this._wrapped
}
}).call(this);
</script>
var chunk = 4;
var arr = ["a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10", "a11", "a12", "a13", "a14", "a15", "a16", "a17", "a18", "a19", "a20", "a21", "a22", "a23", "a24", "a25", "a26", "a27", "a28", "a29", "a30", "a31", "a32", "a33", "a34", "a35", "a36", "a37", "a38", "a39", "a40", "a41", "a42", "a43", "a44", "a45", "a46", "a47", "a48", "a49", "a50", "a51", "a52", "a53", "a54", "a55", "a56", "a57", "a58", "a59", "a60", "a61", "a62", "a63", "a64", "a65", "a66", "a67", "a68", "a69", "a70", "a71", "a72", "a73", "a74", "a75", "a76", "a77", "a78", "a79", "a80", "a81", "a82", "a83", "a84", "a85", "a86", "a87", "a88", "a89", "a90", "a91", "a92", "a93", "a94", "a95", "a96", "a97", "a98", "a99", "a100", "a101", "a102", "a103", "a104", "a105", "a106", "a107", "a108", "a109", "a110", "a111", "a112", "a113", "a114", "a115", "a116", "a117", "a118", "a119", "a120", "a121", "a122", "a123", "a124", "a125", "a126", "a127", "a128", "a129", "a130", "a131", "a132", "a133", "a134", "a135", "a136", "a137", "a138", "a139", "a140", "a141", "a142", "a143", "a144", "a145", "a146", "a147", "a148", "a149", "a150", "a151", "a152", "a153", "a154", "a155", "a156", "a157", "a158", "a159", "a160", "a161", "a162", "a163", "a164", "a165", "a166", "a167", "a168", "a169", "a170", "a171", "a172", "a173", "a174", "a175", "a176", "a177", "a178", "a179", "a180", "a181", "a182", "a183", "a184", "a185", "a186", "a187", "a188", "a189", "a190", "a191", "a192", "a193", "a194", "a195", "a196", "a197", "a198", "a199", "a200", "a201", "a202", "a203", "a204", "a205", "a206", "a207", "a208", "a209", "a210", "a211", "a212", "a213", "a214", "a215", "a216", "a217", "a218", "a219", "a220", "a221", "a222", "a223", "a224", "a225", "a226", "a227", "a228", "a229", "a230", "a231", "a232", "a233", "a234", "a235", "a236", "a237", "a238", "a239", "a240", "a241", "a242", "a243", "a244", "a245", "a246", "a247", "a248", "a249", "a250", "a251", "a252", "a253", "a254", "a255", "a256", "a257", "a258", "a259", "a260", "a261", "a262", "a263", "a264", "a265", "a266", "a267", "a268", "a269", "a270", "a271", "a272", "a273", "a274", "a275", "a276", "a277", "a278", "a279", "a280", "a281", "a282", "a283", "a284", "a285", "a286", "a287", "a288", "a289", "a290", "a291", "a292", "a293", "a294", "a295", "a296", "a297", "a298", "a299", "a300", "a301", "a302", "a303", "a304", "a305", "a306", "a307", "a308", "a309", "a310", "a311", "a312", "a313", "a314", "a315", "a316", "a317", "a318", "a319", "a320", "a321", "a322", "a323", "a324", "a325", "a326", "a327", "a328", "a329", "a330", "a331", "a332", "a333", "a334", "a335", "a336", "a337", "a338", "a339", "a340", "a341", "a342", "a343", "a344", "a345", "a346", "a347", "a348", "a349", "a350", "a351", "a352", "a353", "a354", "a355", "a356", "a357", "a358", "a359", "a360", "a361", "a362", "a363", "a364", "a365", "a366", "a367", "a368", "a369", "a370", "a371", "a372", "a373", "a374", "a375", "a376", "a377", "a378", "a379", "a380", "a381", "a382", "a383", "a384", "a385", "a386", "a387", "a388", "a389", "a390", "a391", "a392", "a393", "a394", "a395", "a396", "a397", "a398", "a399", "a400", "a401", "a402", "a403", "a404", "a405", "a406", "a407", "a408", "a409", "a410", "a411", "a412", "a413", "a414", "a415", "a416", "a417", "a418", "a419", "a420", "a421", "a422", "a423", "a424", "a425", "a426", "a427", "a428", "a429", "a430", "a431", "a432", "a433", "a434", "a435", "a436", "a437", "a438", "a439", "a440", "a441", "a442", "a443", "a444", "a445", "a446", "a447", "a448", "a449", "a450", "a451", "a452", "a453", "a454", "a455", "a456", "a457", "a458", "a459", "a460", "a461", "a462", "a463", "a464", "a465", "a466", "a467", "a468", "a469", "a470", "a471", "a472", "a473", "a474", "a475", "a476", "a477", "a478", "a479", "a480", "a481", "a482", "a483", "a484", "a485", "a486", "a487", "a488", "a489", "a490", "a491", "a492", "a493", "a494", "a495", "a496", "a497", "a498", "a499", "a500", "a501", "a502", "a503", "a504", "a505", "a506", "a507", "a508", "a509", "a510", "a511", "a512", "a513", "a514", "a515", "a516", "a517", "a518", "a519", "a520", "a521", "a522", "a523", "a524", "a525", "a526", "a527", "a528", "a529", "a530", "a531", "a532", "a533", "a534", "a535", "a536", "a537", "a538", "a539", "a540", "a541", "a542", "a543", "a544", "a545", "a546", "a547", "a548", "a549", "a550", "a551", "a552", "a553", "a554", "a555", "a556", "a557", "a558", "a559", "a560", "a561", "a562", "a563", "a564", "a565", "a566", "a567", "a568", "a569", "a570", "a571", "a572", "a573", "a574", "a575", "a576", "a577", "a578", "a579", "a580", "a581", "a582", "a583", "a584", "a585", "a586", "a587", "a588", "a589", "a590", "a591", "a592", "a593", "a594", "a595", "a596", "a597", "a598", "a599", "a600", "a601", "a602", "a603", "a604", "a605", "a606", "a607", "a608", "a609", "a610", "a611", "a612", "a613", "a614", "a615", "a616", "a617", "a618", "a619", "a620", "a621", "a622", "a623", "a624", "a625", "a626", "a627", "a628", "a629", "a630", "a631", "a632", "a633", "a634", "a635", "a636", "a637", "a638", "a639", "a640", "a641", "a642", "a643", "a644", "a645", "a646", "a647", "a648", "a649", "a650", "a651", "a652", "a653", "a654", "a655", "a656", "a657", "a658", "a659", "a660", "a661", "a662", "a663", "a664", "a665", "a666", "a667", "a668", "a669", "a670", "a671", "a672", "a673", "a674", "a675", "a676", "a677", "a678", "a679", "a680", "a681", "a682", "a683", "a684", "a685", "a686", "a687", "a688", "a689", "a690", "a691", "a692", "a693", "a694", "a695", "a696", "a697", "a698", "a699", "a700", "a701", "a702", "a703", "a704", "a705", "a706", "a707", "a708", "a709", "a710", "a711", "a712", "a713", "a714", "a715", "a716", "a717", "a718", "a719", "a720", "a721", "a722", "a723", "a724", "a725", "a726", "a727", "a728", "a729", "a730", "a731", "a732", "a733", "a734", "a735", "a736", "a737", "a738", "a739", "a740", "a741", "a742", "a743", "a744", "a745", "a746", "a747", "a748", "a749", "a750", "a751", "a752", "a753", "a754", "a755", "a756", "a757", "a758", "a759", "a760", "a761", "a762", "a763", "a764", "a765", "a766", "a767", "a768", "a769", "a770", "a771", "a772", "a773", "a774", "a775", "a776", "a777", "a778", "a779", "a780", "a781", "a782", "a783", "a784", "a785", "a786", "a787", "a788", "a789", "a790", "a791", "a792", "a793", "a794", "a795", "a796", "a797", "a798", "a799", "a800", "a801", "a802", "a803", "a804", "a805", "a806", "a807", "a808", "a809", "a810", "a811", "a812", "a813", "a814", "a815", "a816", "a817", "a818", "a819", "a820", "a821", "a822", "a823", "a824", "a825", "a826", "a827", "a828", "a829", "a830", "a831", "a832", "a833", "a834", "a835", "a836", "a837", "a838", "a839", "a840", "a841", "a842", "a843", "a844", "a845", "a846", "a847", "a848", "a849", "a850", "a851", "a852", "a853", "a854", "a855", "a856", "a857", "a858", "a859", "a860", "a861", "a862", "a863", "a864", "a865", "a866", "a867", "a868", "a869", "a870", "a871", "a872", "a873", "a874", "a875", "a876", "a877", "a878", "a879", "a880", "a881", "a882", "a883", "a884", "a885", "a886", "a887", "a888", "a889", "a890", "a891", "a892", "a893", "a894", "a895", "a896", "a897", "a898", "a899", "a900", "a901", "a902", "a903", "a904", "a905", "a906", "a907", "a908", "a909", "a910", "a911", "a912", "a913", "a914", "a915", "a916", "a917", "a918", "a919", "a920", "a921", "a922", "a923", "a924", "a925", "a926", "a927", "a928", "a929", "a930", "a931", "a932", "a933", "a934", "a935", "a936", "a937", "a938", "a939", "a940", "a941", "a942", "a943", "a944", "a945", "a946", "a947", "a948", "a949", "a950", "a951", "a952", "a953", "a954", "a955", "a956", "a957", "a958", "a959", "a960", "a961", "a962", "a963", "a964", "a965", "a966", "a967", "a968", "a969", "a970", "a971", "a972", "a973", "a974", "a975", "a976", "a977", "a978", "a979", "a980", "a981", "a982", "a983", "a984", "a985", "a986", "a987", "a988", "a989", "a990", "a991", "a992", "a993", "a994", "a995", "a996", "a997", "a998", "a999"];
Ready to run.
Test | Ops/sec | |
---|---|---|
Array splice |
| ready |
Underscore |
| ready |
Sugar.js |
| ready |
Underscore (bitwise ~~) |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.