Ich habe versucht, den schnellsten Weg zu finden, um eine for-Schleife mit einem eigenen Bereich auszuführen. Die drei Methoden, die ich verglichen habe, waren:
var a = "t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t".split();
// lodash .each -> 1,294,971 ops/sec
lodash.each(a, function(item) { cb(item); });
// native .forEach -> 398,167 ops/sec
a.forEach(function(item) { cb(item); });
// native for -> 1,140,382 ops/sec
var lambda = function(item) { cb(item); };
for (var ix = 0, len = a.length; ix < len; ix++) {
lambda(a[ix]);
}
Dies ist unter Chrome 29 unter OS X. Sie können die Tests hier selbst ausführen:
Wie ist Lodash .each
fast doppelt so schnell wie einheimisch .forEach
? Und außerdem, wie ist es schneller als die Ebene for
? Zauberei? Schwarze Magie?