TGViewer
Node JS Node JS @nodejs_lib · 1.96K subscribers
Post #338 1.49K
Недавно я наткнулся на интересный вызов — обработать файл размером 12 ГБ, содержащий 1 миллиард строк формата <stationName>;<temperature>\n, с целью агрегировать минимальное, максимальное и среднее значения температуры для каждой станции. В своем блоге Jacky Efendi поделился своим опытом решения этой задачи с использованием Node.js, достигнув ускорения примерно в 30 раз по сравнению с базовой реализацией.

Jacky начал с базового подхода, используя встроенные модули Node.js для построчного чтения файла и хранения агрегированных данных в структуре Map(). Затем он провел профилирование кода с помощью Clinic.js Flame, чтобы определить узкие места производительности. Основное время выполнения занимала функция StringPrototypeSplit, используемая для разделения строк.

Для оптимизации Jacky предложил несколько улучшений:

1. Сокращение вызовов StringPrototypeSplit: уменьшение количества вызовов этой функции для повышения эффективности.
2. Более быстрые преобразования Buffer в числа: оптимизация процесса преобразования данных из буфера в числовые значения.
3. Параллелизация обработки: распределение работы между несколькими потоками или процессами для ускорения обработки больших объемов данных.

https://jackyef.com/posts/1brc-nodejs-learnings

✍️ @nodejs_lib
Jackyef 1-billion row challenge with Node.js 5 minutes to 11 seconds with Node.js is possible?
  • 👍 5
  • ❤ 1
More from @nodejs_lib
  1. Dec 12, 2025State QUIC в Node.js QUIC — это протокол транспортного уровня на базе UDP, созданный для з…
  2. Oct 25, 2025Команда npx — это мощный инструмент в экосистеме Node.js, который часто недооценивают, счи…
  3. Sep 8, 2025Как сериализовать данные из Node.js, чтобы они могли использоваться в других языках и сист…
  4. Aug 16, 2025Использование SQL в Node.js с Sequelize Реляционные базы данных используют SQL (Structured…
  5. Jul 25, 2025Building Microservices with Node.js: Explore microservices applications and migrate from a…
  6. Jul 23, 2025Стилизация текста в консоли Node.js В этом посте мы рассмотрим, как можно стилизовать текс…
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 →