使用wasm数组所需的最少代码量是多少

时间:2018-07-20 02:49:44

标签: javascript arrays webassembly

我有一个c ++文件,其中包含一个仅执行数学运算的函数。

此函数接受一个数组作为参数,并将所有结果保存回同一数组中。

我可以使用emscripten进行编译,这会给我一个正常工作的js和wasm文件,但是它生成的JavaScript充满了我不需要的大量填充符。

如果我不想传递数组,则可以执行以下操作:

var bytes = .... // The bytes of the wasm file
var Module = new WebAssembly.Module(bytes);
var wasmInstance = new WebAssembly.Instance(Module);
var desiredFunction = instance.exports.desiredFunction;

但是,当我使用上面的前三行代码初始化wasm然后尝试调用此命令时:

var buffer = Module._malloc(array.length);  //setup space in wasm memory

我收到一条错误消息,说“ Module._malloc”不是一个函数。为了使malloc ccwrap和ccall正常工作,我还需要编写什么代码?

1 个答案:

答案 0 :(得分:0)

问题在于Emscripten并非为编译非常小的程序而设计。它是为编译大型代码库而设计的-结果,它自动将各种东西捆绑到生成的wasm中并托管JS文件。

有一个issue that discusses adding this as a feature-即可以创建最小的JS主机。

还有其他更轻量级的C / C ++编译工具,例如webassembly –可能更适合您的需求。