這是 wasm-pack未發布文件,已發布的文件可在主要的 Rust 和 WebAssembly 文件網站上找到。此處記載的功能可能無法在已發布的 wasm-pack 版本中使用。

wee_alloc

  1. 什麼是 wee_alloc
  2. 啟用 wee_alloc

什麼是 wee_alloc

WebAssembly 程式碼經常透過網路傳輸給使用者,因此編譯後的程式碼大小通常很重要,以確保應用程式快速載入並具有回應性。

wee_alloc 是一個專為 WebAssembly 設計的微型配置器,其(壓縮前)程式碼大小佔用空間僅為 1 KB。

一項分析顯示,Rust 預設記憶體配置器需要超過一半的最低 WebAssembly 記憶體佔用空間。然而,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"]