由于 Node.js 使用 V8 js 引擎,我认为它的工作方式与 v8 相同,只有在函数或某些代码需要大量的 CPU 运算或被多次调用时才会进行优化/jit 编译。
考虑到我正在开发一个服务器并想要从我的代码中获得最佳性能,而内存不是问题,是否有一种方法可以“强制”所有代码在第一次运行时就进行 JIT 编译并优化性能呢?
由于 Node.js 使用 V8 js 引擎,我认为它的工作方式与 v8 相同,只有在函数或某些代码需要大量的 CPU 运算或被多次调用时才会进行优化/jit 编译。
考虑到我正在开发一个服务器并想要从我的代码中获得最佳性能,而内存不是问题,是否有一种方法可以“强制”所有代码在第一次运行时就进行 JIT 编译并优化性能呢?
我是一名V8开发者。让V8自己完成它的任务可以获得最佳性能。(我们非常关注性能,我们构建V8使其默认配置具有最佳性能)
为了测试目的,确实有一个标志强制在首次执行时对所有代码进行“优化”编译。但在这里,“优化”确实需要加上引号,因为这样做意味着性能 明显 降低 ,不如通常情况下获得的性能好。原因不仅在于编译时间,还在于像JavaScript这样的动态语言,创建优化代码至关重要取决于首先观察到的类型反馈。您可以将没有类型反馈的代码提供给优化编译器,但它将无法完成良好的工作--它有两个选择:产生能够处理任何类型的通用代码(速度与未优化的代码大致相同),或生成随机猜测可能会遇到哪些类型的代码(这意味着几乎有100%的机会至少会猜错一次,代码必须在首次执行时丢弃)。 无论哪种方式,结果性能都比通常的方法差。
如果您想要预先优化代码,请使用C ++、Rust、Go等编写您的服务器。;-)