WebAssembly 进制件依赖 Web 浏览器的 Javascript 引擎来执,需要独的 WebAssembly 运时才能在 Web 浏览器中运 WebAssembly 代码。美国佐治亚大学的论文[《 How Far We’ve Come A Characterization Study of Standalone WebAssembly Runtimes 》][paper1-url]构建了一个标准的 WABench 的基准套件,对独立的 WebAssembly 运行时进行了全面的表征研究,包含性能、内存开销和架构特征。分析了33 个独 WebAssembly 运时的 TOP5 ,发现这些独立运时在运 WebAssembly 进制件时平均会降低 1.59 到 9.57 倍的性能。
通常有两种执行 WebAssembly 代码的方法:解释型和 JIT ( SinglePass, Cranelift, LLVM )。WebAssembly 独立运行时的标准:
- 该运行时是一个独立的 WebAssembly 运行时,支持使用WASI 编译的 WebAssembly 二进制代码。
- 运行时足够成熟,可以运行广泛的 WebAssembly 应用程序。
- 运行时随着 WebAssembly 和 WASI 的发展而积极开发和维护。
论文研究了符合以上标准的 WebAssembly 独立运行时 TOP5:Wasmtime ( Rust ,JIT )、WAVM ( C/C++,JIT )、Wasmer ( Rust ,JIT )、Wasm3 ( C ,解释型)、WAMR (C, 解释型)。
