В исходном состоянии у нас есть сервер rayo, который дает нам 15 906,55 запросов в секунду и задержку 0,1 мс на локальной машине. Я попробую несколько подходов к компиляции, чтобы улучшить показатели.
НКЦ
Модуль NCC компилирует файлы Javascript в один файл Javascript. После компиляции:
cross-env NODE_ENV=production ncc build index.js -o dist/
у меня есть файл размером 2,89 МБ и 17 303,64 запроса в секунду с задержкой 0,08 мс.
Байтенод
Bytenode компилирует Javascipt в байт-код, поэтому я взял ранее скомпилированный NCC файл и получил 4,36 МБ байт-кода. Результаты оказались неутешительными: 14 443,6 об/с и задержка 0,22 мс.
Сборная часть:
bytenode -c build/index.js
Часть выполнения включает в себя выполнение этого дополнительного файла:
require('bytenode') require('dist/index.jsc')
Нексе
Nexe компилирует Js в исполняемый файл:
nexe dist/index.js .\api.exe
Результаты: 14851,46 об/с и задержка 0,15 мс. Немного лучше, чем bytenode, но все же медленнее, чем просто Node.js в одном файле.
Я также пытался уменьшить размер файла с 2,89 МБ до 752 КБ, отказавшись от поддержки модулей ECMAScript. Результаты были примерно такими же: 17 783,6 об/с за 0,08 мс.
Итак, победителем пока является NCC.