Rust 系统编程与 WebAssembly 入门实战:同一算法三种速度的真实对照
“Rust 比 Python 快多少?”——与其背数字,不如跑一次对照实验。本文用同一套递归算法,在 Rust 原生、Rust→Wasm(浏览器环境)、Python 三种形态下实测,差距一目了然。
一、基准设计
刻意选了一个"对解释器最不友好"的算法:递归 Fibonacci(n=35),深达上千万次函数调用,每次调用都有栈帧与参数传递开销。这最能放大执行引擎的差距。
二、三种形态实测
| 形态 | fib(35) 耗时 |
|---|---|
| Rust 原生(cargo run --release) | 13.3 ms |
| Rust→Wasm(node 加载 63KB 产物) | 33.9 ms |
| Python 3.14 | 721.1 ms |
原生比 Python 快54 倍;编译成 Wasm 在浏览器里跑,仍快21 倍。Wasm 相对原生仅 2.5 倍损耗——这就是"浏览器里能跑 CAD、视频剪辑"的底气。
三、Wasm 构建:三步产出 63KB 产物
rustup targetaddwasm32-unknown-unknowncargobuild--release--targetwasm32-unknown-unknown函数加#[unsafe(no_mangle)] pub extern "C"导出 C ABI,node 里WebAssembly.instantiate加载即可直接调用——与原生同源算法,结果完全一致:
四、性能之外的两个系统编程要点
- 素数筛 1e7 仅 18.9ms:
vec![true; n]连续内存对缓存友好,位级操作是 Rust 系统编程的日常; - ROT13 吞吐 3748 MB/s:逐字节循环写法就有这个数,
chunks_exact+ SIMD 进一步优化的空间留给读者。
五、上手路径与环境说明
Windows 无 VS Build Tools 也能装:rustup-init 选x86_64-pc-windows-gnu工具链(自带 MinGW 链接器),rustc 1.98.1 实测。注意 Rust 2024 edition 起属性要写#[unsafe(no_mangle)]——本包已按新语法。
完整工程 + 三份运行留档 + 63KB wasm 产物见下方资源包。
📦配套完整资源已整理上传:点击查看资源包(含全部源码与运行留档,开箱即用)