Emscripten编译C+的结果不好+;到JavaScript&;Asm.js
对于大学的课程,我必须演示asm.js。我找到了一本教程(),这正是我想要的。 所以我创建了给定的C++文件,并用Emscripten编译了它。 结果是一个将近10000行长的文件。找不到“使用asm”语句。与手写JavaScript文件相比,它要慢得多 我正在使用一个可移植的Emscripten SDK包,并在使用之前对其进行了更新 如何让Emscripten生成好的asm代码Emscripten编译C+的结果不好+;到JavaScript&;Asm.js,javascript,c++,emscripten,asm.js,Javascript,C++,Emscripten,Asm.js,对于大学的课程,我必须演示asm.js。我找到了一本教程(),这正是我想要的。 所以我创建了给定的C++文件,并用Emscripten编译了它。 结果是一个将近10000行长的文件。找不到“使用asm”语句。与手写JavaScript文件相比,它要慢得多 我正在使用一个可移植的Emscripten SDK包,并在使用之前对其进行了更新 如何让Emscripten生成好的asm代码 更新: 我在没有Emscipten的情况下为我的演示找到了一个不同的解决方案: . 也许有人需要这个。 10k行J
更新: 我在没有Emscipten的情况下为我的演示找到了一个不同的解决方案: .
也许有人需要这个。
ldd /bin/ls
linux-vdso.so.1 => (0x00007fff8c865000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f7b82854000)
libacl.so.1 => /lib/x86_64-linux-gnu/libacl.so.1 (0x00007f7b8264b000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7b82285000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f7b82018000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7b81e14000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7b82aba000)
libattr.so.1 => /lib/x86_64-linux-gnu/libattr.so.1 (0x00007f7b81c0e000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7b819f0000)
这可能会为您提供有关使用asm.js和emscripten的更多提示:
从我的测试来看,Emscripten似乎只使用asm.js,并在优化级别
-O1
及以上将“使用asm”
放入生成的Javascript中。因此,在编译时,您需要将-O1
(或高于1
的级别)传递给编译器:
eemcc source.cpp -O1 -o target.js`
然后
“使用asm”;
不会被放入生成的Javascript中。虽然我没有找到让Emscripten设置“使用asm”语句的方法(我手动更改了它),我使用@scott stensland,输出的代码必须是这样的,但问题太简单了,普通js比10k行代码要快。但我不知道,为什么Emscripten不在代码中加入“使用asm”。
eemcc source.cpp -O0 -o target.js`