Я пытался найти самый быстрый способ запуска цикла for с его собственной областью. Три метода, которые я сравнивал, были:
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]);
}
Это на Chrome 29 на OS X. Вы можете сами запустить тесты:
Как lodash .each
почти в два раза быстрее, чем native .forEach
? И более того, как это происходит быстрее, чем обычная for
? Волшебство? Черная магия?