javascript - Emscripten 似乎不使用 asm.js

标签 javascript emscripten asm.js

我在 emscripten 文档中读到 emscripten 默认编译为 asm.js 优化,但如果我打开编译后的代码,我找不到任何“使用 asm;”如何得到它?我应该手动添加它还是我编译错误?

目前我正在使用“emcc main.c -o out.html”进行编译,也尝试使用 -02 标志。

最佳答案

这是设计使然。有时它会生成(参见 source code)"almost asm" 而不是 "use asm",这会禁用所有 asm.js 优化。当编译后的代码使用浏览器中未实现的某些功能(如 this v8 issue)时,就会发生这种情况。 对于我现在正在进行的项目,我已将 "almost asm" 替换为 "use asm" for Firefox,并将其保留为 Chrome,因为 "使用 asm" 导致启动时严重减速。

因此,将 "almost asm" 替换为 "use asm" 是不安全的,但有时这可以正常工作。你应该在你必须支持的所有浏览器版本中仔细测试你的应用程序(但确保你在测试时关闭了 devtools)——如果它有效,这意味着你有一个已经实现的幸运案例:继续并替换。

关于javascript - Emscripten 似乎不使用 asm.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20031939/

相关文章:

javascript - 将 Emscripten 与 Fortran 一起使用 : LAPACK binding

javascript - 将 asm 放入现有的 JS 应用程序中

javascript - Emstripten 可以编译 iostream 库吗?

javascript - 在 Node.js 循环中等待 Promise,然后再进入下一个迭代

javascript - 以函数式方式向 js 对象添加字段

javascript - 通过单击相同的链接更改 div

c++ - 将HTML5 Canvas 数据(rgba)发送到asm.js。 C++/JavaScript中的数组类型

javascript - 将表单输入与数据库进行比较

c++ - OpenGL 和 WebGL 之间的 Alpha 渲染差异

javascript - 按位运算如何提高 Asm.js 的性能?