使自己的module.js
(获取解析并创建自己的Webassembly.Module)是一个愚蠢的主意吗?与仅使用em ++生成的相比?
使用embind in emscripten编译程序会同时产生我的module.wasm
文件和module.js
。但是module.js
文件为1.5MB,我似乎对内存管理等没有控制权。
我目前正在使用一个使用OpenCV的自定义编译的c ++程序,而且我的内存不足,如果不创建自己的Webassembly.Module,就无法正确分配内存。
我的解决方案:
我通读了settings.js
(与您的em++
可执行文件位于同一文件夹中)。
我了解到,编译时我唯一需要设置的标志是-s ALLOW_MEMORY_GROWTH=1
。
这使我能够在使用javascript创建时决定模块的TOTAL_MEMORY限制。
答案 0 :(得分:0)
我刚刚测试了使用opencv的c ++模块与未使用opencv的c ++模块之间的大小差异,差异是177KB
至1.5MB
。
这可能表明是的,尝试编写自己的Module对象是愚蠢的。
但是我不确定100%。
答案 1 :(得分:0)
也许您想使用emcc / em ++编译器选项。
正如您在评论中提到的那样,您需要-s ALLOW_MEMORY_GROWTH=1
,但是它并没有达到您的想象,并且也不应该在运行时中设置TOTAL_MEMORY
。
您应将TOTAL_MEMORY
设置为编译器标志。例如,-s TOTAL_MEMORY=100MB
。最好同时保留-s ALLOW_MEMORY_GROWTH=1
。
文档根本无法帮助您,我强烈建议直接阅读setting.js
from the source code来了解编译器标志。