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"]