从不同语言编译的 WebAssembly 二进制文件的大小如何比较?

use*_*415 6 webassembly

垃圾收集语言(例如 Go 和 AssemblyScript)需要随应用程序一起提供运行时来处理垃圾收集。这会导致二进制大小比没有垃圾收集的语言大得多。编译为 WebAssembly 的各种语言的二进制大小如何比较?

Max*_*aey 0

我不能说 Go,但是 AssemblyScript 有一个可选的 GC,需要手动打开。此外,即使没有任何内存分配器直接处理线性内存,它也可以工作(请参阅https://developers.google.com/web/updates/2019/02/hotpath-with-wasm)。除了所有最终工作之外,二进制还允许针对代码收缩进行大量优化。即使使用内存分配器和内置 GC,简单的“hello world”示例也不会变得超过 2 kb,因为 tlsf 编译为大约 1 kb,增量三色标记垃圾收集器甚至更小。

\n\n

当然,当这两个提案出现时,这一切都是不必要的:

\n\n
    \n
  1. https://github.com/WebAssembly/reference-types
  2. \n
  3. https://github.com/WebAssembly/gc
  4. \n
\n\n

\xe2\x80\x8b\xe2\x80\x8bare 在 WebAssembly 中实现。

\n