使用 wasm-bindgen
优化大小
Rust 和 WebAssembly 工作组的 生命游戏教程 有一个关于 缩小 Wasm 代码大小 的精彩章节,但也有一些 wasm-bindgen
特有的项目需要提及!
首先,wasm-bindgen
的设计理念是轻量级的,并且具有“仅为你使用的部分付费”的理念。如果你怀疑 wasm-bindgen
正在使你的程序膨胀,那么这是一个错误,我们很想知道!请随时 提交问题,即使它是一个问题!
要分析的内容
对于 wasm-bindgen
,有几个不同的文件需要测量大小。首先是编译器本身的输出,通常位于 target/wasm32-unknown-unknown/release/foo.wasm
。 此文件未针对大小进行优化,你不应测量它。 在与 wasm-bindgen
链接时,编译器的输出在设计上比它需要的要大,wasm-bindgen
CLI 工具会自动从二进制文件中删除所有不需要的功能。
这给我们留下了两个主要的生成文件来测量大小
-
生成的 wasm - 在运行
wasm-bindgen
CLI 工具后,你将在--out-dir
中获得一个类似foo_bg.wasm
的文件。 此文件是wasm-bindgen
生成的最终成品,它反映了你将发布的应用程序的大小。 代码大小教程 中提到的所有优化都有助于减小此二进制文件的大小,因此请随意尝试! -
生成的 JS - 运行
wasm-bindgen
后的另一个文件是foo.js
文件,该文件实际上由其他 JS 代码导入。 此文件已生成为尽可能小(不包括不需要的功能)。 但是,JS 没有被丑化或最小化,而是仍然是人类可读且可调试的。 期望你运行一个 JS 输出的丑化器或打包器,以在你的应用程序中进一步缩小它。 如果你发现我们可以进一步缩小输出 JS 大小(或使其更适合打包器最小化)的方法,请告诉我们!
示例
例如,wasm-bindgen
仓库 包含一个示例,该示例关于生成小型 Wasm 二进制文件,并展示了如何生成用于添加两个数字的小型 wasm 文件。