lodash take v производительность фрагмента javascript - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть массив длиной 100 000 000

Когда max почти в конце массива, это занимает около 8 секунд:

return _.take(numbers, max)

Это занимает около 1 секунды:

return numbers.slice(0, max)

Почему огромная разница в производительности?ТНХ

1 Ответ

0 голосов
/ 02 декабря 2018

Lodash использует собственную реализацию метода массива slice (в комплектной версии, называемой baseSlice), который вы можете увидеть здесь .

Одним из основных положений lodash являетсясовместимость с браузерами, которой они достигают в большинстве случаев, используя lodash версию различных методов.

Хороший пример - _.take, а также методы _.slice/_.tail/_.chunk/_.drop/_.dropRight/_.initial и т. Д., Которые все под прикрытием используют метод baseSlice и не полагаются на собственный Array.slice

Так что если высравните native против lodash, вы найдете последовательную победу натива, но это не то, что заставляет лодаша сиять ... по крайней мере, до ES6 , то есть.

...