到目前为止,大多数主流浏览器已经开始将优化JIT编译器集成到他们的JavaScript解释器/虚拟机中。这对每个人都有好处。现在,我很难确切地知道他们确实执行了哪些优化以及如何最好地利用它们。每个主要JavaScript引擎的优化参考是什么?
背景:
我正在开发一个可以从更高级别生成JavaScript的编译器。更安全的语言(无耻的插件:它被称为OPA并且它非常酷)而且,考虑到我正在生成的应用程序的大小,我希望我的JavaScript代码尽可能快和内存效率。我可以处理高级优化,但我需要了解更多关于执行哪些运行时转换的信息,以便知道哪些低级代码将产生最佳结果。
一个例子,从我的脑海中开始:我正在编写的语言将很快整合对懒惰的支持。 JIT引擎在惰性函数定义中表现良好吗?
答案 0 :(得分:15)
This article series讨论了V8的优化。总结:
在这种情况下,前两点可能对你没什么帮助。第三个可能会显示将事物缓存在一起的见解。最后一个可能会帮助您创建具有相同属性的对象,因此它们使用相同的隐藏类。
This blog post讨论了SquirrelFish Extreme的一些优化:
TraceMonkey is optimised via tracing。我不太了解它,但看起来它检测到某些“热代码”中的变量类型(代码经常在循环中运行)并根据其类型创建优化代码变量是。如果变量的类型发生变化,它必须重新编译代码 - 基于此,我会说你应该远离改变循环中变量的类型。
答案 1 :(得分:1)
我找到了一个额外的资源: