/Rust-WebAssembly-Benchmark

simple life game. compare wasm with js, js win again.

Primary LanguageJavaScript

wasm和原生js对比

新技术的出现是有一些道理的,wasm解决了预编译为字节码的问题。我们来看一下究竟它是快多少?


wasm技术不仅可以使用在浏览器中作为js的模块引入,相反,wasm的设计是跨平台和跨应用的,它既可以作为任意语言的中间表示(IR),也可以作为任意语言的安全沙盒或者容器。 这方便了在任意需要容器的场景,整合不同语言的功能,实现动态加载和卸载。


最新比较【所有图都可点击查看大图】

性能BAR

生命游戏

Rust优化后速度奇快,我愿吹爆!!!

> 快得不是一点点🤏 <

生命游戏性能对比

截屏2021-08-11 下午11 27 41

文章地址: 这里

dijkstra算法

目前还看不出有太大差别,继续优化相信有奇效

> 快了一丢丢🤏 (200节点)<

最短路径算法

结果

wasm > js。在一些特定的计算场景,wasm可以把速度提升好几倍。

运行方式

需要安装wasm-pack环境。

yarn & yarn build:wasm & yarn start

yarn
yarn build:wasm
yarn start:wasm
yarn start

结构

===========host=================
========/======\================
===dijkstra========life-game====
====|================|==========
======== js & wasm =============
= module federation ==== rust ==
=====\=====================/====
===== webpack 5 =====wasm-pack==

测试进程

  • 20211125 增加Rust后台服务使用wasm的示例,后续可以对比作为容器和沙盒环境使用的wasm模块

  • 20210818 之前的测试有些对rust做了优化但没有对js做优化,今天对js也做了优化,现在的结果算是比较公平

  • 20210816 自己会一些优化手段后,写出来的代码果然wasm更快,所以还是自己需要花时间去钻研啊!😊

  • 20210811 发现了一册宝藏开源书。基于这篇文章优化后Rust非常快!!!!

  • 20210803测试了引入js-sys后,使用Date.now来计算时间,这个也不理想。还不如不计算。另外就是std::time::SystemTime这个库好像不被支持,一使用就unreachable。然后在一个群里问了大家,也没有什么好的性能优化结果。暂时又搁浅吧。继续看有没有库能够超过js性能的