Node.js 如何在运行时如此快速地进行同步'require()'调用?



node.js如何在运行时如此迅速地呼叫'require()'呼叫?使用Java,我们可以使用Maven等构建工具在执行之前构建二进制文件。但是使用node.js,我们实际上没有构建工具,但是我们的node.js代码中嵌入的commonj synchronous require()语句肯定必须是我们的node.js程序中最慢的代码行,但是它们如何运行因此,考虑到他们在运行时加载文件?

这是有关COMPORJS模块的一些信息:http://fredkschott.com/post/2014/06/require-and-the-module-system/

这是require()的性能通常不是node.js程序中的问题的几个原因:

  1. 文件是从本地硬盘驱动器(相对较快)而不是通过Internet获取的。而且,本地操作系统也具有硬盘驱动器缓存,因此文件甚至可能不是来自硬盘驱动器,而是来自内存缓存。

  2. 当性能通常不是问题时,大多数模块都会在服务器启动时加载。在特定服务器请求期间加载新模块很少,这通常是性能实际上重要的。

  3. 模块被缓存,因此一旦加载任何模块后,加载,解析和运行模块就已经被缓存,并且立即从高速缓存返回。

  4. v8在做什么方面相对较快。

也就是说,如果您确实在给定的HTTP请求操作期间运行了许多全新的require()语句(新的语句,以使模块没有被缓存),那么它将严重降低该请求的处理和暂时的可扩展性服务器的。但是,由于您无法一遍又一遍地重复该操作(因为一旦模块被缓存一旦您进行了操作),因此通常不会引起问题。

但是,对于良好的服务器响应时间,您可能不想在服务器请求中首次做require()。通常最好将其加载到服务器初始化时间,以使其被缓存或预加载,并且您不必在服务器请求期间使用一个node.js thread来执行同步require()

最新更新