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