【问题标题】:Why WebAssembly is so slow? [closed]为什么 WebAssembly 这么慢? [关闭]
【发布时间】:2019-05-02 23:22:50
【问题描述】:

我正在使用 Rust 和 WebAssmbly 实现 Mandelbrot Set 可视化,我的目标是使用多线程来实现。

到目前为止,我已经在 J​​avascript(使用 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


【解决方案1】:

记得在构建时使用--release 标志。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 2012-04-29
    • 2016-09-28
    • 2020-02-08
    相关资源
    最近更新 更多