我正在使用AssemblyScript来生成WebAssembly,我不确定为什么"优化"的WebAssembly模块如此之大。 我将基本教程中的简单 add 函数修改为如下所示的乘法函数:
export function mult(a: i32, b: i32): i32 {
return a * b;
}
我可以在优化的.wat文件中找到定义的这个函数:
(func $assembly/index/mult (; 26 ;)
(type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0
local.get $1
i32.mul
)
但是,模块中有大量额外的代码。 模块总尺寸超过1800线。 似乎有很多我不需要的额外东西。 示例文件夹中的 WAT 文件都很好而且很小。 曼德尔布洛特的例子只有200行WAT的,而生命的游戏的例子只有400行。 为什么一个简单的乘法会产生 1800 行? 我是否缺少优化设置?
谢谢
自0.7版本开始,AssemblyScript默认使用完整的运行时,其中包括ARC操作,GC和基本内存操作,这些操作也总是导出到主机并且无法消除。如果不处理主机上的内存和/或传递和分配托管对象,则可以切换到 --runtime none
或 --runtime half
。
查看 docs.assemblyscript.org 上的所有运行时变体