gpt4 book ai didi

node.js - NodeJS 是否支持 JIT 预缓存?

转载 作者:搜寻专家 更新时间:2023-11-01 00:00:39 25 4
gpt4 key购买 nike

我正在使用一个相当大且性能密集型的 nodejs 程序来为 CJK 字体生成提示数据 (sfdhanautohint),为了更好地跟踪依赖关系,我不得不从 makefile like this 中调用 nodejs 程序数万次.

这立即让我担心这样做实际上会在启动和预热 JIT 引擎时产生大量开销,因此我决定为 nodejs 找到类似 ngen.exe 的东西。看起来是 V8 already has some support for code caching ,但是我可以做些什么来在 NodeJS 中使用它吗?

搜索 kProduceCodeCache in NodeJS's GitHub repo 不会返回任何非捆绑 v8 结果。也许是 feature request 的时候了……

最佳答案

是的,这是自动发生的。 Node 5.7.0+ 会在您第一次运行代码时自动预缓存(为您的源预热 JIT 引擎)(自 PR #4845/2016 年 1 月此处:https://github.com/nodejs/node/pull/4845)。

重要的是要注意你甚至可以预热预热(在你的代码甚至在机器上运行之前,你可以预缓存你的代码并告诉 Node 加载它)。

致力于 Yarn、Atom 和 Babel 的 Facebook 开发人员 Andres Suarez 创建了 v8-compile-cache ,这是一个很小的模块,它将对您的代码和 require() 进行 JIT,并将您的 Node 缓存保存到您的 $TMP 文件夹中,然后在找到时使用它。查看来源,了解它是如何满足其他需求的。

如果您愿意,您可以进行一些在启动时运行的检查,如果机器架构在您的缓存文件集中,则只需加载缓存文件而不是让 Node JIT 处理一切。对于具有大量需求的真实世界的大型项目,这可以将您的加载时间减少一半或更多,并且它可以在第一次运行时完成

有利于加速容器并使它们在 500 毫秒的“微服务”启动时间之内。

重要的是要注意:

  1. 缓存是二进制的;它们包含机器可执行代码。它们不是您的原始 JS 代码。
  2. 对于您打算运行的每个 objective-c PU(IA-32、IA-64、ARM 等), Node 缓​​存二进制文件都不同。如果您想为您的用户预缓存预缓存,您必须为您想要支持的每个目标架构制作缓存目标。
  3. 享受惊人的速度提升 :)

关于node.js - NodeJS 是否支持 JIT 预缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34883568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com