Javascript 制作自己的模块与使用em++;生成模块

Javascript 制作自己的模块与使用em++;生成模块,javascript,module,emscripten,webassembly,Javascript,Module,Emscripten,Webassembly,制作自己的module.js(获取解析并创建自己的Webassembly.module)是一个愚蠢的想法吗?与仅使用em++生成的相比 在emscripten中使用embind编译程序会生成我的module.wasm文件和module.js。然而,module.js文件是1.5MB,我似乎无法控制内存管理等 我目前使用的是一个自定义编译的C++程序,它使用OpenCV,而且我总是内存不足,如果我不创建自己的WebBaseMy,就不能正确分配内存。 我的解决方案: 我通读了settings.js(

制作自己的
module.js
(获取解析并创建自己的Webassembly.module)是一个愚蠢的想法吗?与仅使用em++生成的相比

在emscripten中使用embind编译程序会生成我的
module.wasm
文件和
module.js
。然而,
module.js
文件是1.5MB,我似乎无法控制内存管理等

我目前使用的是一个自定义编译的C++程序,它使用OpenCV,而且我总是内存不足,如果我不创建自己的WebBaseMy,就不能正确分配内存。 我的解决方案:

我通读了
settings.js
(它与您的
em++
可执行文件位于同一文件夹中)

在那里,我了解到我需要设置的唯一标志是编译时的
-s ALLOW\u MEMORY\u GROWTH=1


这使我能够在JavaScript中创建模块时的内存总量限制。

< P>我只是测试了使用OpenCV和不使用的C++模块之间的大小差异,差异是代码> 177kb < /代码>到代码> 1.5 Mb< /COD> 这可能表明,是的,尝试编写自己的模块对象是愚蠢的


但我不是100%确定。

< P>我只是测试了使用OpenCV和不使用的C++模块之间的大小差异,差异是代码> 177kb >代码> 1.5 Mb < < /P> 这可能表明,是的,尝试编写自己的模块对象是愚蠢的


但是我不是100%确定。

也许你想使用emcc/em++编译器选项

正如您在评论中所提到的,您需要
-s ALLOW_MEMORY_GROWTH=1
,但它不符合您的想法,您也不应该在运行时设置
总内存

您应该将
TOTAL_MEMORY
设置为编译器标志。例如,
-s总内存=100MB
。最好保持
-s ALLOW_MEMORY_GROWTH=1


文档对您毫无帮助,我强烈建议您直接阅读以了解编译器标志。

也许您希望使用emcc/em++编译器选项

正如您在评论中所提到的,您需要
-s ALLOW_MEMORY_GROWTH=1
,但它不符合您的想法,您也不应该在运行时设置
总内存

您应该将
TOTAL_MEMORY
设置为编译器标志。例如,
-s总内存=100MB
。最好保持
-s ALLOW_MEMORY_GROWTH=1


文档对您没有任何帮助,我强烈建议您直接阅读以了解编译器标志。

我不是Wasm专家,这就是为什么我还没有投票,但我认为您的问题可以通过进一步描述您的用例来改进。我认为这两个选项都有其优点/缺点,目前还没有足够的细节来提供建议。为什么不使用额外的em++选项来增加模块内存大小?@bumsikim我有
-s ALLOW\u memory\u GROWTH=1
选项,但似乎没有多大帮助,因为在创建
WebAssembly.memory
对象时,似乎有一个内存最大限制。记忆增长不能超过这个@如果我刚刚知道如何增加内存总大小:在源代码中找到这一行<代码>变量初始总内存=模块['TOTAL_MEMORY']| | 16777216这表明您可以只设置模块对象的TOTAL_MEMORY属性。当初始化我不是Wasm专家时,这就是为什么我还没有投票,但我认为你的问题可以通过进一步描述你的用例来改进。我认为这两个选项都有其优点/缺点,目前还没有足够的细节来提供建议。为什么不使用额外的em++选项来增加模块内存大小?@bumsikim我有
-s ALLOW\u memory\u GROWTH=1
选项,但似乎没有多大帮助,因为在创建
WebAssembly.memory
对象时,似乎有一个内存最大限制。记忆增长不能超过这个@如果我刚刚知道如何增加内存总大小:在源代码中找到这一行<代码>变量初始总内存=模块['TOTAL_MEMORY']| | 16777216这表明您可以只设置模块对象的TOTAL_MEMORY属性。当初始化谢谢你时,我昨天自己发现了这个问题,但这是一个非常好的答案。谢谢,我昨天自己发现了这个问题,但这是一个非常好的答案。