bcrypr 异步与同步 node.js
bcrypr Async vs Sync node.js
问题很简单,即使我们在 node.js 中使用 Bcrypt 模块的异步模式,它不会仍然用完 cpu 的 bcrypt 周期吗?它不像在其他地方执行的数据库读取,而是 CPU 操作。那么为什么async方法有性能优势
bcrypt 中的异步操作似乎使用了不会阻塞主 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 中使用 Bcrypt 模块的异步模式,它不会仍然用完 cpu 的 bcrypt 周期吗?它不像在其他地方执行的数据库读取,而是 CPU 操作。那么为什么async方法有性能优势
bcrypt 中的异步操作似乎使用了不会阻塞主 node.js 线程的本机代码工作线程。有关示例,请参阅 here in the C++ source。
确实 CPU 时间是 CPU 时间所以无论是同步还是异步完成都将花费相同的 CPU 时间,但是因为异步版本是在一个单独的线程,使计算机能够同时使用多个内核 运行 或将其与主 node.js 线程进行时间分割,以便主 node.js 线程在执行加密操作时不会被阻塞.
这将使 node.js 线程获得比同步完成加密操作更多的 CPU 时间(因为加密 CPU 时间从主 node.js 线程),因此只要有至少两个 CPU 核心可用,node.js 线程就有性能优势。