【问题标题】:Automatic javascript function inlining自动javascript函数内联
【发布时间】:2017-04-04 06:10:44
【问题描述】:

这是一个关于现代 javascript 引擎中 JIT 编译器的典型行为的问题。假设我有一个包含许多字段的 A 类,其中的实例被另一个 B 类大量使用,包括在循环中。与其公开 A 的内部,还有一堆单行访问方法。 单独来看,每种方法对性能的影响不大,但让我们假设它们共同产生很大的影响。现代 JIT 会内联这些函数吗?

【问题讨论】:

  • 可能。试一试,看看你最终是否表现不佳。

标签: javascript jit inlining


【解决方案1】:

迟到的答案,但我认为这可能会对问题的未来观众有所帮助。

这取决于方法的复杂性,副作用函数可能不会被内联,而简单的方法通常会被内联。
但是,正如 @Ry- 在 cmets 中提到的那样,它并不是真正可预测的。 JavaScript 引擎在进行优化之前会考虑很多事情——看看它是否真的值得,所以你的问题没有客观的答案。
最好的办法是获取您的代码并对其进行分析,以查看函数是否被内联,this 文章还显示了另一种执行此操作的方法,如果您足够认真的话。

【讨论】:

    猜你喜欢
    • 2011-08-25
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多