170 похожих чатов

Это разве не странный кейс? Надо знать, как они работают,

при этом код должен быть написан без этого знания

32 ответов

8 просмотров

вообще, интересно, какие есть актуальные на 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

reduce spread все еще плохой выбор. https://www.measurethat.net/Benchmarks/Show/8315/0/reduce-and-spread-vs-foreach-and-mutate

Алексей-Попов Автор вопроса

Из-за пересоздания же Если сделать без 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 тормозной

Хорошо, что я его никогда не использовал)

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
How to create an OS in C? what to study?
Linus
18
а как бы вылезти из ИО, что то типа IO -> Ether или в какую сторону смотреть ? что то туплю
Fedor
9
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
Карта сайта