В исходном состоянии у нас есть сервер 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.