你以为 WASM 只能靠 JIT 才能跑出高性能?今天 Wasmi 2.0 用解释器模式把这件事彻底变了

写前端的人都知道,WebAssembly 要高性能,要么靠 JIT(即时编译)预热拉满,要么靠 AOT 提前编译。但 JIT 有冷启动代价,AOT 跨平台体积又大。今天这件事多了一个新答案——Wasmi 2.0。
Wasmi 是一个基于 Rust 的 WebAssembly 解释器,不是编译器。9月1日正式发布,经过8个月的专项优化,在 Apple M2 Pro、AMD EPYC 7763、Intel Xeon Platinum 8370C 三种芯片上均大幅领先 Wasmtime、Wasmer、Wasm3 等主流 Wasm 运行时,比 Wasmi 1.0 快了 2.2 倍。
关键在于它的四种指令派发模式:Direct-Threaded Code 速度最优;Indirect-Threaded Code 速度与内存兼顾;Switch-Loop 兼容性最强;auto-dispatch 自动选择最优配置。内部所有指令处理函数共享同一签名,用累加器寄存器分别处理整数和浮点值,显著减少了派发开销。
解释器不等于慢。JIT 要在运行时把字节码编译成机器码,有冷启动代价;Wasmi 直接执行字节码,首次调用零延迟,性能曲线从第一帧就在峰值。2.0 新增的稳定燃料计量功能让执行方精确控制最多执行步数,超出则中断——这在区块链虚拟机里直接对应 gas 费,嵌入式设备也能用它防止恶意插件耗尽资源。
项目由 Stellar Development Foundation 赞助,Soroban、Ripple 等区块链项目用它做智能合约执行引擎,Typst、Zellij 等用它做插件隔离,Firefly Zero 这类轻量级游戏机也在用。
WASM 性能这件事,编译器不是唯一答案。对于区块链和 IoT 场景,解释器的确定性执行和零冷启动是硬需求,值得重点关注。

评论区

0 条评论

登录后可评论。

铁锈·Rust工具链 16 阅读