【发布时间】:2019-05-02 23:22:50
【问题描述】:
我正在使用 Rust 和 WebAssmbly 实现 Mandelbrot Set 可视化,我的目标是使用多线程来实现。
到目前为止,我已经在 Javascript(使用 Typescript)和 Rust 单线程中实现了 Mandelbrot Set。我做了一些基准测试,Rust 实现慢了大约 x17 倍,我完全迷失了,我不知道为什么我会得到这么差的性能。
这里是 repo,master 使用 Rust 的实现,js-implementation 使用 Rust 的实现。
https://github.com/DanielRamosAcosta/mandlerbot-set-webassembly
提前致谢。
【问题讨论】:
-
JavaScript 引擎已经优化了 10 多年,而 WASM 引擎只有一年的历史。
-
@JonasWilms Wasm 的全部意义在于它的运行速度比 JavaScript 快得多。这是来自Wikipedia article 的前几句话:“[Wasm] 旨在使执行代码几乎与运行本机机器代码一样快。它被设想为补充 JavaScript 以加速 Web 应用程序的性能关键部分以及以后启用以 JavaScript 以外的语言进行 Web 开发。”
-
@daniel-ramos 你能提供一些关于如何构建源代码的说明吗?我在尝试构建它时遇到错误,这使得尝试重现测量结果变得困难!否则到目前为止我可以看到的一个问题是您没有使用
cargo build --release(请注意您如何在debug文件夹上运行wasm-bindgen)。如果您也有兴趣,Rust 和 WebAssembly 这本书有一个great section on time profiling! -
@JonasWilms 基本上,Wasm 的主要观点是它实际上确实在实践中运行得更快。其中大部分以接近本机的速度运行,即使是最优化的 JavaScript JIT 也无法与之竞争。我推荐阅读this nice article by Lin Clark 作为介绍。
标签: javascript rust webassembly mandelbrot