对underscore的调用过程还是不太明白呢,如下:
调用方式一:
var iterations = 1000000;
console.time('#optimizeCb');
for(var i = 0; i < iterations; i++ ){
_.each([1,2,3],function(val,key){});
};
console.timeEnd('#optimizeCb')
VM57585:7 #optimizeCb: 1791.113ms
调用方式二:
var iterations = 1000000;
console.time('#optimizeCb');
for(var i = 0; i < iterations; i++ ){
_([1,2,3]).each(function(val,key){});
};
console.timeEnd('#optimizeCb')
VM57586:7 #optimizeCb: 2332.177ms
为啥效率差别这么大,第二种慢主要是因为有实例化过程吗?希望大神指教呀?
看着好像是实例化问题,但是如果代码这样写的话:
看输出的时间,实例化貌似问题不大,重点在于调用
_.each
跟_().each
的区别我没用过后者,跟踪了一下源码看其实现:
从这里也可以看出
_().each
实际上底层也是用了_.each
,但是人家不是直接用,还多了一些赋值啊,数组push等操作,我想后者多花的时间应该出自这些操作吧。