2026 WebAssembly 运行时性能实测

Performance of WebAssembly Runtimes in 2026

2026 WebAssembly 运行时性能实测

我追踪了从 2024 到 2026 年多个 WebAssembly 运行时的性能变化,使用 libsodium 加密库作为基准。结果显示,Wasmer 凭借对 wide_arithmetic 指令的支持成为最快选择,Wasmtime 则逐年稳步提升。Bun 在 2026 年实现了巨大飞跃,而 Wazero 基本持平。关键在于,启用 wide_arithmetic 能让加密代码性能大幅提升,接近原生水平。不同运行时的表现差异显著,选择运行时和特性支持对性能影响巨大。

如果 WebAssembly 指令集能直接表达算术运算,运行时就不必重新发现 C 编译器早已知晓的内容。
  1. azakai

    看这里 Node 的速度这么慢,我怀疑是不是没强制开启优化。它不支持 OSR(栈上替换),这意味着基准测试脚本没有机会从基础编译器升级到完全优化的层级。

    运行

    node --no-liftoff

    就能避免这个问题。

    (这在 Web 上不是问题,因为代码无论如何都要返回事件循环,从而允许层级升级正常工作,而 Node 正是针对这类工作流优化的。)

  2. pmkary

    很多年前,我正准备参加 Wasmer 的面试,当时他们向我展示,通过在 Linux 中将 Wasmer 作为内核扩展运行,他们让它的速度提升了四个数量级(即快 10000 倍)。考虑到 WASI,我忍不住想,除了 Wasmer 这类工具的插件用途之外,WASM 不被所有操作系统接受为第二种二进制格式的意义何在?比如 Windows 可以同时支持 .exe 和 .wasm,这样我们终于能拥有真正的跨平台二进制文件。苹果肯定永远不会接受;微软会做,而 Linux 完全可以做到。

  3. ncruces

    很好奇我的 wasm2go 跟 wazero 比起来表现如何。我应该自己测测看。:)

    https://github.com/ncruces/wasm2go

同日更多故事

2026-09-12