优化的AssemblyScript仍为4K,可实现简单乘法

时间:2019-07-13 20:51:52

标签: webassembly assemblyscript

我正在使用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行?我缺少优化设置吗?

谢谢

1 个答案:

答案 0 :(得分:0)

自默认版本0.7 AssemblyScript起,默认情况下将使用完整的运行时,其中包括ARC ops,GC和基本内存操作,这些操作也始终导出到主机并且无法删除。如果您不处理主机上的内存和/或传递和分配托管对象,则可以切换到--runtime none--runtime half

See all runtime variants on docs.assemblyscript.org