Я хотел бы иметь все преимущества Node.js для написания веб-приложений в моем распоряжении. Тем не менее, я знаю, что его модель не очень хороша для выполнения вычислительных интенсивных функций DSP. Я просматривал документацию и обнаружил, что на аддонах есть область.
Думаю, мой вопрос в том, что: если бы я написал свои функции DSP в C++ (или привел его откуда-то еще) и включил их в мое приложение Node.js, сколько из-за замедления я испытал бы? У меня создается впечатление, что, поскольку я звоню в общую библиотеку, я не должен испытывать замедление. Любое понимание этого было бы здорово.
Вам не нужно создавать двоичный аддон для взаимодействия с кодом C++. Возможно, вы могли бы превратить код C++ в инструмент командной строки?
Затем вы можете использовать модуль child_process
в узле, чтобы создать процесс вашего DSP-инструмента и использовать какой-то IPC (межпроцессное общение), например, Unix-сокеты для связи между узлом и C++.
Таким образом, вы устраните необходимость в слишком большом количестве C++ клеевого кода.
Детский процесс: http://nodejs.org/api/child_process.html
Сеть (для сокетов): http://nodejs.org/api/net.html
Это будет только медленнее, чем ваши индивидуальные компоненты. Узел не будет блокироваться, ожидая данных из вашего C++, поэтому может делать другие вещи (отвечая на запросы HTTP и т.д.).
Еще один вариант для IPC - использовать библиотеку передачи сообщений, такую как zeromq.
привязки zeromq C++: http://zeromq.org/bindings:cpp
привязка узла zeromq: http://zeromq.org/bindings:node-js