使用Rust WebAssembly 0拷贝进行计算加速

demo: https://github.com/aircloud/rust-wasm-demo

其他资料:入门 Rust 开发 WebAssembly

一般来说,使用 WebAssembly 能够在一定程度上提高性能,不过有的时候我们也许会发现,使用 WebAssembly 之后,有的时候我们不仅发现性能没有提升,反而下降了许多甚至数倍,实际上这是因为,使用 WebAssembly 需要非常谨慎,有很多细节都会大幅度影响性能,比如:

  • 我们编译采用的是 debug 还是 release 方式。
  • 最后编译的结果是否采用了不同级别的优化,如果使用了 opt-level = 's' 那么通常速度也会下降很多。
  • 是否在 JS 和 rust 之间存在大量的数据拷贝,因为很多代码是工具链生成的,也许有的时候我们会忽视这一点。

本文针对以上等一些问题特别是第三点,给出一个 wasm 优化的参考方案,并给出示例代码。

阅读更多