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

时间:2013-05-24 21:47:56

标签: javascript assembly browser v8

据我所知,Chrome中的V8引擎已经使用了程序集级别优化已有一段时间了,现在(在撰写本文时)即将发布的OdinMonkey在Firefox上表明正在编写大量的低级优化JavaScript的浏览器。

我希望这符合SO的礼仪,但我的问题是三折......

  1. (我想可以编辑出一个特定的问题) - 关于Firefox的OdinMonkey / asm.js优化 - 这是“我们”需要具体代码吗?或者它与V8引擎类似,因为它都发生在“幕后”?我在这个特定主题上看到的消息来源似乎是矛盾的。

  2. 更一般地(也许是一个更相关的问题)有关于编码JavaScript以获得更好的'提前'/汇编/等的最佳实践。优化?例如,我已经读过使用按位移位到舍入数字可以改善优化,但是,根据浏览器,它可能几乎没有收益。

  3. 将此问题转化为第三个问题以防止混淆 - 最后,客户端程序集级别优化是否无效? “我们”作为程序员应该尽我们所能来制作高效的JavaScript代码,并让优化程序尽力而为吗?

1 个答案:

答案 0 :(得分:0)

您必须专门针对using only low-level constructs and strict typing定位asm.js。单个违反许多asm.js限制将中止整个编译并回退到常规JS VM。

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

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