优化的AssemblyScript仍然是4K,用于简单的乘法



我正在使用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 上的所有运行时变体

相关内容

  • 没有找到相关文章

最新更新