这是一个关于现代 javascript 引擎中 JIT 编译器的典型行为的问题。假设我有一个包含许多字段的 A 类,其中的实例在另一个 B 类中大量使用,包括在循环中。与其公开 A 的内部,还有一堆单行访问方法。单独来看,每种方法对性能的影响不大,但让我们假设它们共同产生很大的影响。现代 JIT 会内联这些功能吗?
问问题
284 次
1 回答
1
迟到的答案,但我认为这可能有助于问题的未来观众。
这取决于方法的复杂性,副作用函数可能不会被内联,而简单的方法通常会被内联。
但是,正如@Ry- 在评论中提到的那样,它并不是真正可预测的。JavaScript 引擎在进行优化之前会考虑很多事情——看看它是否真的值得,所以你的问题没有客观的答案。
最好的办法是获取您的代码并对其进行分析以查看函数是否被内联,如果您足够认真,本文还展示了另一种方法。
于 2018-05-27T09:08:47.250 回答