在 Node Js 中使用异步函数比使用同步函数有什么性能优势吗?

Are there any performance benefits of using Asynchronous functions over Synchronous in Node Js?

现在我看到一篇区分异步函数和同步函数的文章。根据我对不同示例和解释的理解,同步函数被阻塞,而异步函数则没有。但我想知道使用其中任何一种是否有任何性能优势?

是的。虽然 Node 确实是单线程的,但使用异步函数仍然更快。例如,在从磁盘读取文件或等待 http 请求完成时,Node 可以处理其他事情。

Are there any performance benefits of using Asynchronous functions over Synchronous in Node Js?

,在 node.js.

中使用异步、非阻塞 API 调用有显着的性能优势

因为 node.js 中的 Javascript 是单线程的,调用同步阻塞函数意味着 node.js 在该阻塞函数完成之前无法执行任何其他操作。如果这是一个旨在为许多用户的请求提供服务的服务器,则意味着所有其他用户请求都必须等到这个阻塞的同步函数调用完成后才能执行任何操作。这对于多用户服务器来说太可怕了。

如果您调用异步、非阻塞 API,那么 node.js 可以在非阻塞 API 执行其工作时自由地处理其他请求。这极大地提高了服务器的响应能力和可扩展性。

事实上,您几乎不可能拥有一个可用的多用户服务器进程,其中包含大量阻塞的同步调用。它们只会破坏服务器的可扩展性。正是这种非阻塞、异步的设计赋予了 node.js 最佳的可扩展性,因为它可以比需要在实际 OS 线程中为每个并行进程提供服务的线程系统以更轻量级的方式进行扩展,并且需要使用线程同步 APIs 才能访问共享数据。

现在,假设您只是在自己的计算机上本地编写一个 运行 的单用户脚本(假设您要处理一堆文本文件以索引其中的所有单词,作为某些内容的一部分一次性过程)。如果您不想同时处理多个文件或同时满足多个用户的需求,那么无论您使用阻塞还是非阻塞,对您的最终解决方案都没有任何影响 API调用,因为当您处于阻塞调用时,您的 node.js 进程无论如何都没有其他事情可做。仅在这一种情况下,使用阻塞 API 调用进行编码实际上可能更简单。