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