是否可以强制 Node.js 进行 JIT 编译代码?

elp*_*q42 1 javascript performance v8 node.js

由于 Node.js 使用 V8 js 引擎,我想它的工作方式与 v8 相同,并且仅在 CPU 密集型或被多次调用时优化/jit 编译函数或某些代码段。

考虑到我正在制作一个服务器并且我想从我的代码中获得最佳性能,并且内存不是问题,是否有办法“强制”我的所有代码进行 JIT 编译和优化以提高性能从它第一次运行的那一刻起?

jmr*_*mrk 11

V8 开发人员在这里。通过让 V8 发挥作用,您可以获得最佳性能。(我们非常关心性能,我们构建 V8,这样开箱即用的配置才能为您提供最佳性能。)

出于测试目的,确实有一个标志可以强制在第一次执行时对所有代码进行“优化”编译。但“优化”真正需要加引号那里,因为这样做意味着显著降低性能比你通常会得到。原因不仅在于编译时间,还在于对于像 JavaScript 这样的动态语言,创建优化代码关键取决于首先观察类型反馈。你可以将没有类型反馈的代码提供给优化编译器,但它不会做得很好——它有两个选择:要么生成可以处理任何类型的通用代码(这将与非优化代码一样快) ),或者生成代码来随机猜测它会遇到哪些类型(这意味着几乎 100% 的可能性某些猜测是错误的,并且在第一次执行时必须丢弃代码)。无论哪种方式,由此产生的性能都比常规的做事方式差。

如果您希望能够提前优化代码,请使用 C++、Rust 或 Go 等编写您的服务器;-)