2017-01-25 8 views
1

Я создаю скрипт сервера NodeJS, который должен хранить хэш-пароль пользователя, в дополнение к другим частям данных, до их хранения в базе данных. Из-за математически интенсивного процесса создания защищенных хэшей и большого объема хеширования, который нужно будет сделать, я решил кодировать процесс хеширования в C.NodeJS: Производительность Native Addon vs External Binary

Мой вопрос в следующем: сколько я могу добавить путем выполнения процесса хеширования, закодированного на C через child_process.exec, в отличие от создания собственного аддона для NodeJS?

I.E. каждый раз, когда часть данных должна быть хэширована, мне нужно будет вызвать child_process.exec с куском данных в качестве аргумента.

+0

https://stackoverflow.com/questions/28267794/advantages-of-node-js-addon-vs-child-process – AllTheTime

+0

Я понимаю, что создание родного аддона будет врожденно более эффективным, мой вопрос в том, насколько more performant - это родной аддон vs child_process.exec в отношении ресурсных ресурсов/времени обработки, предполагая, что выполняется эквивалентная функция. – nicktendo

ответ

1

Существует значительный накладной порождающий дочерний процесс по сравнению с просто выполнением кода в процессе уже существующего узла. Эти два процесса необходимо подключать и обмениваться данными через stdio. Если вам нужна специфика, вам придется протестировать ее самостоятельно для вашего случая использования. Один из способов тестирования - найти встроенную хеширующую lib и протестировать ее против вашего дочернего процесса C.

С учетом сказанного, если вы не подписываете сотни пользователей в секунду, служебные данные о производительности использования дочернего процесса совершенно ничтожны. Вы даже можете просто хешировать в узле и, скорее всего, не заметите разницы.

Фактически, вы должны просто использовать модуль 'crypto', который входит в состав узла, поскольку он уже является родным модулем.

https://stackoverflow.com/a/17201493/3355076 имеет простой пример.