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

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

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

32 ответов

32 просмотра

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

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

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта