【发布时间】:2013-09-23 18:13:12
【问题描述】:
我试图找到在自己的范围内运行 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]);
}
这是在 OS X 上的 Chrome 29 上。您可以在此处自行运行测试:
lodash 的 .each 的速度几乎是原生 .forEach 的两倍?而且,它比普通的for 快多少?巫术?黑魔法?
【问题讨论】:
-
lambda是干什么用的?为什么不直接把cb直接放上去? -
Lo-Dash 的
.each()比您测试中的任何其他方法慢得多,对我来说。FF 23.0.1 -
.each()和for的区别在于附加的函数查找(lambda)。请参阅 jsperf.com/lo-dash-each-vs-native-foreach/15 以获得更有意义的基准。 -
我在您的测试中添加了 10000 个元素,现在每个 lodash 都比原生 foreach 慢:jsben.ch/RBkjH
标签: javascript performance lodash