我正在使用AssemblyScript来生成WebAssembly,但是我不确定为什么“优化的” WebAssembly模块如此之大。我在基础教程中将简单的add函数修改为如下所示的乘法函数:
export function mult(a: i32, b: i32): i32 {
return a * b;
}
我可以在Optimized.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文件都很小。 Mandlebrot示例仅包含200行WAT,而Life Game示例仅包含400行。为什么简单乘法会产生1800行?我缺少优化设置吗?
谢谢
答案 0 :(得分:0)
自默认版本0.7 AssemblyScript起,默认情况下将使用完整的运行时,其中包括ARC ops,GC和基本内存操作,这些操作也始终导出到主机并且无法删除。如果您不处理主机上的内存和/或传递和分配托管对象,则可以切换到--runtime none
或--runtime half
。