我正在编写一个 NodeJS 服务器脚本,该服务器需要在将用户密码和其他数据存储到数据库之前对其进行哈希处理。由于创建安全哈希的数学密集过程,以及需要完成的大量哈希,我选择用 C 语言编写哈希过程。
我的问题是:通过 child_process.exec 执行用 C 编码的散列过程与为 NodeJS 创建 native 插件相比,我增加了多少开销?
即每次需要对一段数据进行哈希处理时,我都需要使用该段数据作为参数调用 child_process.exec。
最佳答案
与仅在现有 Node 进程上执行代码相比,生成子进程的开销很大。两个进程需要通过stdio连接和通信。如果您想要具体细节,则必须针对您的用例自行测试。一种测试方法是查找 native 哈希库,并针对您的 C 子进程对其进行测试。
话虽如此,除非您每秒注册数百个用户,否则使用子进程的性能开销完全可以忽略不计。您甚至可以只在 Node 中进行哈希处理,很可能不会注意到其中的区别。
事实上,您应该只使用 Node 中包含的“crypto”模块,因为它已经是一个原生模块。
关于c - Node : Performance of Native Addon vs External Binary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41859870/