我在 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/