到目前为止,大多数主流浏览器已经开始将优化的即时编译器集成到他们的JavaScript解释器/虚拟机中。这对每个人都有好处。现在,我很难确切地知道他们执行了哪些优化,以及如何最好地利用它们。关于每个主要JavaScript引擎中的优化的参考资料是什么?
背景:
我正在开发一个编译器,它从一种更高级、更安全的语言生成JavaScript (无耻的插件:它被称为OPA,非常酷),考虑到我正在生成的应用程序的规模,我希望我的JavaScript代码尽可能快,尽可能地节省内存。我可以处理高级优化,但我需要更多地了解执行哪些运行时转换,以便知道哪些低级代码将产生最佳结果。
在我的脑海中有一个例子:我正在编译的语言很快就会集成对懒惰的支持。使用惰性函数定义时,JIT引擎是否表现良好?
发布于 2010-01-13 18:46:25
This article series讨论了V8的优化。总而言之:
它生成非字节码的本机代码,垃圾回收,(Wikipedia)
在这种情况下,前两点可能对您没有多大帮助。第三个可能显示了将数据缓存在一起的洞察力。最后一种方法可能会帮助您创建具有相同属性的对象,以便它们使用相同的隐藏类。
This blog post讨论了SquirrelFish Extreme的一些优化:
TraceMonkey is optimised via tracing。我不太了解它,但它看起来像是在一些“热代码”中检测变量的类型(代码经常在循环中运行),并根据变量的类型创建优化的代码。如果变量的类型改变了,它必须重新编译基于这个的代码,我想说你应该避免在循环中改变变量的类型。
发布于 2011-06-09 15:03:45
我找到了一个额外的资源:
https://stackoverflow.com/questions/2055981
复制相似问题