我的数组长度为100,000,000
max
接近数组结尾时,大约需要8秒钟:
return _.take(numbers, max)
这大约需要1秒钟:
return numbers.slice(0, max)
为什么会有巨大的性能差异?
答案 0 :(得分:3)
Lodash使用自己的slice
数组方法(在称为baseSlice
的捆绑版本中)的数组方法,可以使用see here。
lodash的主要前提之一是浏览器兼容性,它们在大多数情况下都是通过使用lodash
版本的各种方法来实现的。
一个很好的例子是_.take
以及_.slice/_.tail/_.chunk/_.drop/_.dropRight/_.initial
等方法,所有这些方法都利用了baseSlice
方法,而不依赖于本机Array.slice
因此,如果您将native
与lodash
进行比较,您会发现本机赢钱始终如一,但这并不是让lodash大放异彩的原因……至少是 ES6