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