为了看看它是如何执行的,我手写了一个非常短的asm.js模块,它使用32位整型math和types化数组(Int32Array)来模拟二维波动方程。 我有三个版本,尽可能相似: 普通的(即清晰的,尽pipe是C风格的)JavaScript 与1相同,添加了asm.js注释,以便通过validation器,根据Firefox和其他工具 除了没有“使用asm”之外,与2相同。 指令在顶部 我在http://jsfiddle.net/jtiscione/xj0x0qk3/上留下了一个演示,它允许您在模块之间切换以查看使用每个模块的效果。 所有三个工作,但速度不同。 这是热点(与asm.js注释): for (i = 0; ~~i < ~~h; i = (1 + i)|0) { for (j = 0; ~~j < ~~w; j = (1 + j)|0) { if (~~i == 0) { index = (1 + index) | 0; continue; } if (~~(i + 1) == ~~h) […]
最近我一直在阅读关于asm.js和web程序集: http://ejohn.org/blog/asmjs-javascript-compile-target/ From ASM.JS to WebAssembly 我仍然对一些事情感到困惑: asm.js代码是否及时编译并运行? 编译成什么? 除了asm.js是二进制文本和wasm(web程序集)之外,2之间有什么区别? 这对浏览器中运行的其他脚本语言意味着什么? 以python为例,它会是 python代码编译为wasm? 要么 python解释器(Cpython)编译成wasm和解释python?
我读过这个问题如何用asm.jstesting和开发? ,接受的答案给出了链接http://kripken.github.com/mloc_emscripten_talk/#/ 。 幻灯片放映的结论是“ 静态types语言,尤其是C / C ++可以有效地编译为JavaScript ”,所以我们可以“ 期望编译的C / C ++的速度比本机代码慢2倍,或者更好,今年晚些时候 “。 但是非静态types的语言如常规的JavaScript本身呢? 它可以编译为asm.js吗?