现代JavaScript引擎执行哪些优化?

问题描述 投票:15回答:2

[目前,大多数主流浏览器已开始将优化的JIT编译器集成到其JavaScript解释器/虚拟机中。对每个人都有好处。现在,我很难知道它们确实执行了哪些优化以及如何最好地利用它们。每个主要JavaScript引擎的优化参考是什么?

背景:

我正在使用一种从高级和更安全的语言(无耻的插件:它称为OPA,非常酷)生成JavaScript的编译器,鉴于我正在生成的应用程序的大小,我想我的JavaScript代码要尽可能快并尽可能节省内存。我可以进行高级优化,但是我需要更多地了解执行哪些运行时转换,以便了解哪些低级代码将产生最佳结果。

一个例子,从我的脑海中浮现出来:我正在编译的语言将很快集成对懒惰的支持。 JIT引擎在惰性函数定义中表现良好吗?

javascript ajax performance jit
2个回答
15
投票

This article series讨论了V8的优化。总结:

在此情况下,前两点可能对您没有太大帮助。第三个可能显示出将内容缓存在一起的洞察力。最后一个可以帮助您创建具有相同属性的对象,以便它们使用相同的隐藏类。

[This blog post讨论了SquirrelFish Extreme的一些优化:

  • 字节码优化
  • 多态内联缓存(如V8)
  • 上下文线程化的JIT(本机代码生成简介,如V8)
  • 正则表达式JIT

TraceMonkey is optimised via tracing。我对此了解不多,但是看起来它可以检测到某些“ hot code”中的变量类型(经常在循环中运行的代码)并根据该变量的类型创建优化的代码。如果变量的类型发生更改,则必须重新编译代码-基于此,我想您应该避免在循环内更改变量的类型。


1
投票

我找到了其他资源:

© www.soinside.com 2019 - 2024. All rights reserved.