这是 wasm-pack 的**未发布**文档,已发布的文档可在 Rust 和 WebAssembly 主文档网站上找到 。此处记录的功能可能在 wasm-pack 的已发布版本中不可用。

wee_alloc

  1. 什么是 wee_alloc
  2. 启用 wee_alloc

什么是 wee_alloc

WebAssembly 代码通常通过网络传输给用户,因此编译后的代码大小对于确保应用程序快速加载并响应性很重要。

wee_alloc 是一个为 WebAssembly 设计的小型分配器,其(预压缩)代码大小仅为 1 千字节。

分析表明,超过一半的最小 WebAssembly 内存占用空间是由 Rust 的默认内存分配器所需的。然而,WebAssembly 代码通常不需要复杂的分配器,因为它通常只需要几个大的初始分配。

wee_alloc 以牺牲速度来换取大小。它具有很小的代码大小,但与默认的全局分配器相比,它的性能并不具有竞争力。

有关更多详细信息,请参阅 wee_alloc 存储库,或 有关缩小 WebAssembly 二进制文件代码大小的常规文档

启用 wee_alloc

lib.rs 中,我们在 cfg_if! 宏中配置了 wee_alloc

#![allow(unused)]
fn main() {
cfg_if! {
    if #[cfg(feature = "wee_alloc")] {
        #[global_allocator]
        static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT;
    }
}
}

此代码块旨在将 wee_alloc 初始化为全局内存分配器,但仅当在编译时启用了 wee_alloc 功能时才执行。可以通过在构建时传递额外的选项来启用此功能

$ wasm-pack build --features wee_alloc

或者,您也可以在 Cargo.toml 中默认启用它

[features]
default = ["console_error_panic_hook", "wee_alloc"]