问题很简单,即使我们在node.js中使用带有Bcrypt模块的异步模式,它是否仍然会在bcrypt周期中耗尽CPU?它不像在其他地方执行的数据库读取,而是 CPU 操作。那么为什么异步方法具有性能优势
最佳答案
bcrypt 中的异步操作似乎使用 native 代码工作线程,该线程不会阻塞主 Node.js 线程。请参阅here in the C++ source举个例子。
确实,CPU 时间就是 CPU 时间,因此无论是同步还是异步,都会花费相同的 CPU 时间,但由于异步版本是在单独的线程上完成的,因此计算机能够使用多个内核并发运行或与主 Node.js 线程进行时间切片,以便在执行加密操作时不会阻塞主 Node.js 线程。
与同步完成加密操作相比,这将使 Node.js 线程获得更多的 CPU 时间(因为加密 CPU 时间从主 Node.js 线程中扣除),因此只要有至少两个可用的 CPU 核心,Node.js 线程就会具有性能优势。
关于node.js - bcrypr 异步与同步 Node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33906479/