【发布时间】:2013-04-12 13:22:17
【问题描述】:
我想知道 asm.js 规范中是否有任何“设计限制”会阻止任何编译器直接从中生成本机汇编代码。
目前,firefox 的速度似乎是本机代码的一半,但我想知道为什么它不能以本机速度运行。在我看来,asm.js 很像 asm..
【问题讨论】:
标签: javascript performance compiler-construction emscripten
我想知道 asm.js 规范中是否有任何“设计限制”会阻止任何编译器直接从中生成本机汇编代码。
目前,firefox 的速度似乎是本机代码的一半,但我想知道为什么它不能以本机速度运行。在我看来,asm.js 很像 asm..
【问题讨论】:
标签: javascript performance compiler-construction emscripten
目前的限制是使用Typed Array 类型的 Javascript 作为内存(stack 和 heap)。这是由于其他脚本与您的 asm.js 生成的 Javascript 交互,并且需要共享的“内存”空间。
此外我猜Typed Arrays 是作为实际堆内存实现的,这会比使用堆栈慢。
【讨论】:
Typed Array 的更方便的实现,比如实际使用堆栈..?
Typed Array 接口访问堆栈。因此,您至少将始终拥有该委托开销。
因为 Firefox 的编译器没有像 C 编译器那样对 asm.js 代码进行很多优化。 在 Windows 上,也是因为编译后的代码必须对数组访问执行边界检查(在其他操作系统上,Firefox 的 asm.js 编译器 OdinMonkey 使用内存保护)。
【讨论】: