Node.js - технология для запуска JavaScript кода вне браузера. Раньше код мог запускаться только в части фронтенда, но теперь JavaScript может исполняться на сервере, это позволяет писать серверный код для динамических веб-страниц и веб-приложений, а также для программ командной строки на этом языке.
Релизы Node.js появляются часто, новые версии выпускаются как правило в апреле и октябре. Так, самой актуальной версией сейчас является Node.js 18.3.0. Однако, изменение версии платформы влечет за собой обновление большей части пакетов, которые необходимы для корректной работы приложения. Настройка зависимостей занимает много времени, а трудозатраты на рефакторинг кода, в случае изменений синтаксиса в обновленных библиотеках, могут быть очень большими. Поэтому до сих пор используются и довольно популярны версии 12, 10 и даже 8. Насколько критично использовать версию платформы Node.js, которая перестала поддерживаться несколько лет назад, и такие ли большие изменения претерпевала технология?
Последняя анонсированная версия Node.js рассчитана на Linux-системы, включая Debian 10 и Ubuntu 20.04, а также для macOS 10.15+. Из-за проблем со сборкой движка V8, разработанного компанией Google, временно прекращено формирование 32-разрядных сборок для Windows, или потребуется использование Windows Subsystem for Linux (WSL).
Оптимизация в обновлении Node.js заключается и в улучшениях движка V8 (рис. 1), на которой и основана среда. V8 поддерживает использование динамически связанных общих объектов, написанных на C ++, в связке с JavaScript. Добавление новых функций и методов, расширение API, ускорение инициализации полей классов – всё это стало доступно в серверной JavaScript-платформе Node.js 18.0.
Динамика производительности с обновлением версии движка V8
Проведение испытаний в идеальных условиях: использование только одной стартовой функции и заглушки-ответа, как это принято в базовом приложении – позволяют определить, что обновление движка способствовало увеличению производительности разных методов в среднем на 30%.
Особый интерес представляет количество запросов, которое может обработать сервер в одну секунду – RPS (Requests Per Second). Node.js однопоточна и асинхронна. Это значит, что процедуры чтения файлов, запросы к базе данных и все другие возможные действия происходят одновременно. Среда постоянно работает и ждет подключений в один процесс, не плодя их при каждом запросе. JavaScript код выполняется в главном потоке этого процесса, а все операции ввода-вывода выполняются в других потоках практически без задержки.
Переход на более новую версию Node.js дает преимущество в производительности, но вдруг можно обойтись рефакторингом кода, который не повлечет за собой изменений в сборочных пакетах. Базовое Node.js 8 приложение в среднем способно обработать 16176 запросов в секунду. Отталкиваясь от этой цифры можно проверить производительность разных методов:
Ту же аналогию можно провести и с другими базовыми методами, используемыми в расчетах и обработке данных. Так, Math.round(el*100)/100 в 2 раза быстрее чем toFixed(2)
На производительность приложения влияют и следующие факторы:
Таким образом, из проведенных экспериментов можно сделать вывод, что обновление на новые версии Node.js может существенно повысить производительность приложения. Но, рефакторинг кода и использование больших вычислительных мощностей в некоторых случаях дает не меньший прирост производительности без необходимости изменения ядра приложения.
БУДЕМ
НА СВЯЗИ
+7 (991) 115-27-79
support@volhinsoft.ru
Заказать обратный звонок
Расскажите о вашей задачи и мы предложим несколько вариантов ее решения: