我正在使用一个相当大且性能密集的nodejs程序来为CJK字体生成提示数据(sfdhanautohint),为了更好的依赖性跟踪,我不得不最终从makefile调用nodejs程序数万次{ {3}}
这让我立即担心这样做实际上会在启动和预热JIT引擎时投入大量开销,因此我决定为nodejs找到类似ngen.exe
的内容。它似乎是V8 like this,但在NodeJS中有什么我可以做的吗?
搜索already has some support for code caching不会返回任何非捆绑的v8结果。也许现在是kProduceCodeCache
in NodeJS's GitHub repo ...
答案 0 :(得分:1)
是的,这是自动发生的。第一次运行代码时(自PR#4845/2016年1月在此:https://github.com/nodejs/node/pull/4845),Node 5.7.0+自动预缓存(预热源的JIT引擎)。
重要的是要注意,您甚至可以预热预热(在甚至在计算机上运行代码之前,您都可以预缓存代码并告诉Node加载它)。
Facebook开发人员Andres Suarez从事Yarn,Atom和Babel的工作,创建了v8-compile-cache,这是一个很小的小模块,它将使您的代码和require()准时化,并将Node缓存保存到$ TMP中文件夹,然后使用它(如果找到)。查阅源代码,了解如何完成此工作以满足其他需求。
如果愿意,您可以在启动时进行一点检查,并且如果计算机体系结构在您的缓存文件集中,则只需加载缓存的文件,而不是让Node JIT一切。对于一个有大量需求的真实大型项目,这可以将您的加载时间减少一半或更多,并且可以在第一次运行时完成它。
对于加速容器并使它们在500毫秒的“微服务”启动时间下有效。
请务必注意: