TGViewer
Physics.Math.Code Physics.Math.Code @physics_lib · 147K subscribers
Post #15365 4.89K
👨🏻‍💻 Технически map медленнее цикла for

Рассмотрим на примере движка JavaScript. Когда вы используете arr.map(callback), для каждого элемента массива необходимо:
1. Создать контекст для вызова функции callback.
2. Передать в неё аргументы (element, index, array).
3. Вызвать эту функцию.
4. Получить возвращённое значение.
5. Записать это значение в новый массив.

В классическом цикле for вы просто напрямую обращаетесь к элементу массива по индексу (arr[i]) и выполняете операцию. Никаких дополнительных вызовов функций, создания контекстов и промежуточных массивов не происходит. Кроме того, map создаёт новый массив, что требует дополнительной памяти и времени на аллокацию. Цикл for может писать результат сразу в заранее подготовленный массив или вообще не создавать его, если это не нужно.

🖥 Разница в производительности может быть очень существенной. Вот несколько наглядных примеров из реальных тестов:

▪️ В одном из бенчмарков на Node.js map и reduce оказались в сотни раз медленнее обычного for. Время выполнения для map составило ~11 000 мс против ~35 мс у for.

▪️ В другом тесте Array.map выполнял всего 44.74 операции в секунду, в то время как простой цикл for с инициализацией массива — 150 операций в секунду. Это означает, что map был более чем в 3 раза медленнее.

▪️ В тестах, где map используется как альтернатива for...of, отмечается, что код с итераторами и функциями, вызываемыми в цикле (включая map, filter, reduce), может быть примерно в 10 раз медленнее, чем прямой цикл for.

Есть интересный нюанс. В некоторых движках (например, Safari/WebKit) map может оказаться даже быстрее, чем for...of с итератором, потому что итераторы тоже создают дополнительные накладные расходы на вызов метода .next(). Однако классический for с индексом всё равно остаётся быстрее всех.

Всё это становится важным, когда вы работаете с очень большими массивами (десятки или сотни тысяч элементов) в критичном для производительности коде — например, в играх, при обработке видео, научных расчётах или в высоконагруженных серверных приложениях.

В 95% обычных задач (обработка данных из формы, небольшие списки в UI). Разница в пару миллисекунд не заметна пользователю, и читаемость кода map (декларативный стиль, отсутствие ручного управления счётчиком) часто важнее микрооптимизации. #программирование #алгоритмы #структуры_данных #IT #рефакторинг #оптимизация #javascript

🍩 Для донатов на кофе ☕️: +79616572047 (СБП / ВТБ / OZON)

📚 Искусство программирования / The Art of Computer Programming

📗 Методы и алгоритмы решения задач оптимизации [1983] Бейко, Бублик

📚 Подборка полезных книг по Computer Science и для тех, кто изучает IT образование [30 книг]

📚 Подборка из 30 книг по программированию на JavaScript


📚 Подборка по WEB программированию (38 книг)

💡 Physics.Math.Code // @physics_lib
  • ❤ 10
  • 👍 9
  • 🔥 4
  • 🤯 3
  • 😱 1
  • 👻 1
  • 👨‍💻 1
More from @physics_lib
  1. Oct 9, 2026🟥 Эксперимент с маслом и водой в вакуумной камере Вода в вакууме кипит, потому что при ни…
  2. Oct 9, 2026📜 В 1900 году никому не известный французский математик Луи Башелье защитил в Сорбонне ди…
  3. Oct 7, 2026😵‍💫 Плоттер, который рисует картинки и даже портреты в полярной системе координат У поля…
  4. Oct 7, 2026🔴 ЗАДАЧА ДНЯ: Геомеханика и теория упругости Представьте, что вы проектируете горный тонн…
  5. Oct 6, 2026🎈 Резиновый шарик в тепловизоре 🔥 Ранее на канале был уже такой опыт. Кратко о происходя…
  6. Oct 6, 2026⚡️ Друзья-подписчики, которые имеют premium-подписку, нужно помочь сообществу голосами, чт…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →