rustwasm / rust-webpack-template

Kickstart your Rust, WebAssembly, and Webpack project!
Apache License 2.0
562 stars 75 forks source link

Rust + WASM vs JS performance #169

Open helabenkhalfallah opened 4 years ago

helabenkhalfallah commented 4 years ago

Summary

Hello, I want to use WASM in my frontend projects but comparing Rust + WASM performance vs JS, I always get JS more faster :

My project : https://github.com/helabenkhalfallah/rust-react-wasm-js

I tried also many optimization flags combination, like :

[profile.release]
# This makes the compiled code faster and smaller, but it makes compiling slower,
# so it's only enabled in release mode.
lto = true

[profile.dev]
lto = true
opt-level = 3

Benchmarks : 1- Filter a big array to keep only numbers (4000 records) 2- Sort, map, filter a big array (about 10000 records) 3- Rust + reqwest vs JS + axios (download about 7800 records)

Benchmarks results : image

WASM isn't suitable for these kinds of tasks (usual website tasks) ? If yes where WASM + Rust shine (I'm confused about when to use?) Else is there others suggestions for optimization ?

Thanks :)

helabenkhalfallah commented 4 years ago

Hello, have you any suggestions how can I enhance performance and reduce bundle size ? Why Rust + Wasm are slower than JS, is this due to memory read/write and wasm boot time ? Could you help me to go further more in my tests and adoption. Thanks.

alucardpj commented 3 years ago

this problem maybe due to WasmPackPlugin,this plugin will build the wasm in debug mode by default, until you set the

forceMode: "production"

explicitly. If you directly run "wasm-pack build", it will build in production mode, so there is a huge gap between these two testing result. You can turn this setting and have a try. This bug bothered me whole day. WTF! Hope it can help you!