为(潜在的)未来浏览器汇编语言优化优化JavaScript的最佳实践是什么?

What are the best practices for optimising JavaScript for (potential) future browser assembly-language optimisations?

本文关键字:优化 最佳 JavaScript 是什么 浏览器 未来 汇编语言      更新时间:2023-09-26

据我所知,Chrome中的V8引擎已经使用汇编级优化一段时间了,现在(在撰写本文时)即将发布的Firefox上的OdinMonkey表明,正在为JavaScript编写广泛的低级优化。

我希望这是在SO的礼仪范围内,但我的问题是三重…

  1. (一个特定的问题,我想可能会被编辑掉)-关于Firefox的OdinMonkey/asm.js优化-这是"我们"必须专门编码的东西吗?还是它与V8引擎相似,都是在"幕后"完成的?在这个特定的话题上,我所看到的来源似乎都是矛盾的。

  2. 更一般地说(也许是一个更相关的问题),是否有关于更好地"提前"/汇编/等编码JavaScript的最佳实践。优化?例如,我读到使用位移位到整数可能会改善优化,但是,取决于浏览器,它可能导致很少甚至没有收获。

  3. 将其纳入第三个问题以防止混淆-最后,客户端组装级优化是徒劳的吗?"我们"作为编码人员是否应该尽我们所能地编写高效的JavaScript代码,并让优化过程发挥其最大的作用?

您必须通过仅使用低级结构和严格类型来专门针对asm.js。只要有一次违反asm.js的限制,就会导致整个编译过程中断,并返回到普通的JS虚拟机。

你不能仅仅通过调整现有的JS代码来利用asm.js。不能保证asm. JS风格的JS在普通JS VM中会更快。它可能更适合于优化,但OTOH asm.js需要大量的类型转换,其他vm可能无法优化。

对于V8和其他Firefox的VM Zoo规则是一样的——不要混合类型,不要在任何地方使用evalwith,等等