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

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

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

32 ответов

36 просмотров

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта