Сравнение JavaScript Array метода reduce с for statement

preview_player
Показать описание
Разбираемся в том, почему в JavaScript использование Array метода reduce в сравнении с for, при соблюдении некоторых правил, будет, как минимум не медленнее, а в некоторых случаях даже быстрее.

Сделаем соответствующие замеры подтверждающие заявленные тезисы.

Таймкоды:
00:00:00 Музыка
00:03:00 Вступление
00:05:00 Проблематика или почему есть сомнения относительно reduce vs for
00:07:55 Разбор типичных мифов о reduce
00:09:20 Что и как мы будем измерять
00:20:45 Первые цифры
00:26:50 Цифры с отключенными оптимизациями
00:29:50 Цифры с включенными оптимизациями, но функция передается не как параметр
00:31:40 Условия и цифры когда reduce-ер быстрее for
00:36:42 Резюме сказанного выше
00:39:15 Дальнейшие перспективы reduce и производных map filter
00:43:10 Вопросы из чата
00:49:40 Клянчим подписку/лайк.деньги


*Поддержать маленького бородатого JavaScript-ра*
Карта Приват: 5168745021397333

USDT Tron (TRC20): TKoZu59WHiX6L6qvwYTYTsZJerDrnAHBTx
USDT etherium (erc20): 0x75fb8a62dfcf453b2e73f1ef1c407d46f918fffa
TON: UQAGXvuhxg3qU0eFgOxtdDlKXqdp1zPq6yCRSRbRYQClxOzH
bitcoin:bc1q74aru82v4d3alay7p53jdwkmxe4a5gz7fmvfm2?message=AsForJS&time=1686349743

⎡~perf ~6 ~Array ~v8 ~reduce ~for⎦
Рекомендации по теме
Комментарии
Автор

Таймкоды:
00:00:00 Музыка
00:03:00 Вступление
00:05:00 Проблематика или почему есть сомнения относительно reduce vs for
00:07:55 Разбор типичных мифов о reduce
00:09:20 Что и как мы будем измерять
00:20:45 Первые цифры
00:26:50 Цифры с отключенными оптимизациями
00:29:50 Цифры с включенными оптимизациями, но функция передается не как параметр
00:31:40 Условия и цифры когда reduce-ер быстрее for
00:36:42 Резюме сказанного выше
00:39:15 Дальнейшие перспективы reduce и производных map filter
00:43:10 Вопросы из чата
00:49:40 Клянчим подписку/лайк.деньги

demimurych
Автор

Эта лекция просто бомба! Кратко и очень информативно! Побольше такого контента! ❤

AndNan
Автор

Максим Юрьичь, лай бог тебе здоровья! И слушать приятно и кладезь знаний фантастическая. Лишние бабки сразу тебе шлю%}

divisorZero
Автор

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

МаксимАндреев-цт
Автор

Лайк за наконец короткое и информативное видео. Оформил подписку на бусти

johnstark
Автор

Лайк не глядя. Вечером перед сном посмотрю. Сейчас нужно срочно вставать и дописывать прилагу на Angular :)

mrgouane
Автор

Very interesting video, thank you for the effort.

narek
Автор

Спасибо за материал! Будет ещё трансляция по forEach, map, filter?

paulbruno
Автор

Скажите, а как обстоят дела с другими движками, например, с Rhino, там тоже есть оптимизации и всё сказанное можно и на них спроецировать?

theloveopium
Автор

Полезные знания, спасибо. JS действительно очень показывает себя по перфомансу.

Понимаю что вы имеете в виду, но я не могу назвать "без сайд эффектов" функцию на js в которой есть "+"

zeOnni
Автор

30:00
Если doReduce объявить через const, а не через var, не будет ли v8 оптимизировать коллбэк так же как инлайн функцию? Он же увидит что коллбэк не будет изменяться.

MrCOMMANDES
Автор

закинул в boosty двадцаточку, нельзя котам голодать

bfg
Автор

Вот какой контент нужен нам, бездарям!

xSxVKaJnwQ
Автор

Посмотрел пару видео на вашем канале, не знаю, заметите ли вы мой комментарий, но очень хотелось бы, что бы вы так же как и сами часто говорите не вводили людей в заблуждение. У вас ошибка в сравнении reduce и for. Написаный код НЕ идентичен, т.к. в случае c reduce сначала происходит сумма мелких числе и потом уже она прибавляется к theSummator, а в случаее с for вы производите сложении с theSummator на каждый элемент массива.
Правильнее было бы завести отдельную переменную или функцию, которая вернёт сначала сумму элементов (для примера с for), а уже потом эту сумму прибавить в общем блоке к theSummator

NWGuide
Автор

for (let i = 0; i < 10; i++) {
i--
}

какой здесь расход памяти?

alekseypavlov
Автор

Вот, что значит возраст. Люди с такими знаниями сидят без денег. А я еще про себя переживаю, что с моими знаниями никуда не удалось устроиться. Да куда уж мне, если такие люди без работы. Почему людей за 40 вычеркивают из жизни, не понять.

phat
Автор

2 питання:
1. Чому var а не const/let? (Або де це глянути?)
2. Чому все обгорнуте в душки? (Або де це глянути?)

Чи це просто релігійні погляди?

Seriogas
Автор

Usually I watch in English, but in that case I choose russian))) nobody dives so deep

saskirakosyan
Автор

reduce с ИНКРЕМЕНТОМ счетчика - для англичан это разрыв шаблона

bfg
Автор

Murych, how to pass external function validateObj to fiteredArr1 in a correct manner to avoid side effects?

Как правильно передать внешнюю функцию validateObj в filteredArr1 чтобы избежать side effects? Не раскрыто в видео.

const arr = [
{name: "name1", valid: true},
{name: "name2", valid: false},
{name: "name3", valid: true},
]

// validation without external function
const filteredArr = arr.reduce(
(acc, obj) => ( obj.valid ? (acc.push(obj), acc) : acc )
, new Array()
)

// validation with external function
const validateObj = (obj) => obj.valid ? true : false
const filteredArr1 = arr.reduce(
(acc, obj) => ( validateObj(obj) ? (acc.push(obj), acc) : acc )
, new Array()
)

AndNan