0

据我了解,Chrome 中的 V8 引擎一直在使用程序集级优化,现在(在撰写本文时)即将在 Firefox 上发布的 OdinMonkey 表明正在将大量低级优化写入 JavaScript 浏览器.

我希望这是在 SO 的礼节范围内,但我的问题是三个方面......

  1. (我想可能会删除一个特定的问题)——关于 Firefox 的 OdinMonkey/asm.js 优化——这是“我们”必须专门编写的代码吗?还是它类似于 V8 引擎,因为这一切都发生在“幕后”?我在这个特定主题上看到的消息来源似乎是矛盾的。

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

  3. 将其引入第三个问题以防止混淆——最后,客户端装配级别的优化是否毫无结果?“我们”作为编码人员是否应该尽我们所能来生成高效的 JavaScript 代码,并让优化程序尽其所能?

4

1 回答 1

0

您必须通过仅使用低级结构和严格类型来专门针对 asm.js。一次违反众多 asm.js 限制将中止整个编译并回退到常规 JS VM。

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

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

于 2013-06-06T02:11:53.140 回答