为什么for..of + push()可能比Array.from(foo)和[... foo]更快?

时间:2017-05-14 15:16:45

标签: javascript ecmascript-6

我经常使用Array.from()[...foo]从可迭代对象中获取数组。我也可以迭代它并手动推送到一个数组,但我更喜欢原生数据,因为它很简单,我认为本机实现会更有效。

但是,我发现一些基准测试结果显示那些原生方式较慢

https://jsperf.com/set-iterator-vs-foreach/4

我还在Chrome和Firefox上运行了更少(50)和更多(10k)元素的测试,但最终得到了类似的结果。

https://jsfiddle.net/unarist/k0cu8wta/2/

我可以理解[...foo]Array.from()更快,因为Array.from()必须处理类似数组的对象和mapFn参数,但我找不到合理的理由约在[...foo]for..of + push()之间。

是什么让for..of + push()Array.from()[...foo]更快?

更新:我关心的不是 还有我应该使用哪种。我很惊讶本机版本比JS版本慢,我想知道为什么,因为我认为“一般来说,本机版本很快”。

(例如,本地人比循环+推送方式更多的工作,对某事物的特殊优化等)。

我在Windows 10 x64上测试了Chrome 60和Firefox 54。

0 个答案:

没有答案