wee_alloc

  1. 什么是 wee_alloc
  2. 启用 wee_alloc

什么是 wee_alloc

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

wee_alloc 是一款专为 WebAssembly 设计的小型分配器,其(预压缩)代码大小仅为 1 KB。

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

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

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

启用 wee_alloc

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


# #![allow(unused_variables)]
#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"]