我在emscripten文档中读到emscripten默认编译为asm.js优化,但是如果我打开编译后的代码,我就找不到任何“use asm;”怎么弄明白?我应该手动添加还是编译错误?
目前我正在使用“emcc main.c -o out.html”进行编译,也尝试使用-02标志。
答案 0 :(得分:3)
这是设计的。有时它会生成(请参阅source code)"almost asm"
而不是"use asm"
,这会禁用所有asm.js优化。当编译的代码使用某些未在浏览器中实现的功能(如this v8 issue)时会发生这种情况。
对于我现在正在处理的项目,我已将"almost asm"
替换为"use asm"
用于Firefox并将其保留为Chrome,因为"use asm"
在启动时导致严重减速。
因此,用"almost asm"
替换"use asm"
是不安全的,但有时候这样做也行不通。您应该在所有浏览器版本中仔细测试您的应用程序(但确保您使用关闭的devtools进行测试)您必须支持 - 如果它有效,这意味着您有一个已经实现的幸运案例:继续并替换。
答案 1 :(得分:1)
不是最好的解决方案,但是我用“使用asm”替换了“几乎asm”,并且它与Firefox一起工作(正确编译并且可以更快地测量)。
我还寻找一个解决办法让Emscripten自己做,但没有找到解决方案。