при этом код должен быть написан без этого знания
вообще, интересно, какие есть актуальные на 2020 год советы по микро оптимизации
кроме совета не заниматься микрооптимизациями?)
да похоже сейчас v8 уже всё за нас делает
Не заниматься оптимизацией преждевременно
Использовать reduce 😎 Вообще можно посмотреть бенчмарки на том сайте, который ты нашёл. Я вот увидел список на первой странице, помню, и меня там заинтересовал и удивил результат array.from vs new array
Кстати, часто сталкиваюсь с тем, что программисты на JS почему то не знают и не умеют использовать связку map reduce
а зачем нужна эта связка? вроде достаточно просто reduce
Ну они просто тоже самое пишут в декларативном стиле с помощью for of
Потому что эти функциональные методы не рекомендуются для асинхронных вызовов
Можно редьюсить по промису
Можно, это неочевидно
arr.reduce((acc, x) => acc.then(() => f(x)), Promise.resolve())
Да, как Object assign и spread operator
Из-за пересоздания же Если сделать без spread, должно быть сильно лучше Опять, что ли, расчехлять орудие
Расчехляй )
вопрос в том, насколько часто используется этот recude spread. не в смысле "сколько раз вызывается", а в смысле "люди частенько используют такой паттерн". который на пустом месте уменьшает производительность.
но пример, когда без знания внутренних оптимизаций получается, что интуитивно более быстрый код работает медленнее. Reduce с мутацией сработал на порядок медленнее reduce с пересозданием объекта и выделением памяти
А ссылку на тест?
Ничего не мешает всегда немного думать, и всегда принимать решение, а есть ли основания полагать, что вот тут использование reduce значительно снизит производительность приложения. И использовать иногда фор, иногда методы. Нужно ли беспокоиться о разнице в 0.0001 сек. А если так обрабатываются очень большие данные, нормально ли, что это вообще происходит на ноде?
https://www.measurethat.net/Benchmarks/Show/10649/0/reduce-and-spread-vs-foreach-and-mutate-2
Я только добавил reduce на object.assign
все верно, сначала профилирование, потом оптимизация.
показывай код
https://www.measurethat.net/Benchmarks/Show/10650/0/reduce-and-spread-vs-foreach-and-mutate-3
var combined = objectsArray.reduce((acc, obj) => { for (key in obj) { acc[key] = obj[key]; } return acc; }, {}); выглядит скорее императивно, чем функционально
да и пофиг, если сравнивать производительность
Какой результат?
Array.from тормозной
Хорошо, что я его никогда не использовал)
Обсуждают сегодня