The Truth about Rust/WebAssembly Performance
Greg Johnston2 HN recommenders · recommended in 2 months, 2023-2026
218K views · 3 years ago · talk · dated
Leptos creator Greg Johnston examines Rust/WebAssembly frontend frameworks against JavaScript frameworks using the JS framework benchmark. He argues that WASM is no longer too slow for DOM-heavy rendering.
Cited as evidence that DOM access is not the bottleneck for WebAssembly, and as an explanation of signals-based updates versus virtual DOM.
45:05Servo Architecture: Safety and Performance
linux conf au 2017 - Hobart, Australia
12K views • 9 years ago
13:45A 10x faster TypeScript
Microsoft Developer
608K views • 1 year ago
52:54Rust at speed — building a fast concurrent database
Jon Gjengset
225K views • 7 years ago
0:14Chrome vs Firefox vs Safari vs Servo WebRender
Jake Archibald
121K views • 10 years ago
13:44Fastest browser engine by far at 500 FPS! Servo Webrender - CSS on the GPU part 2: Demo
𝓖𝓷𝓸𝓶𝓮💫𝓢𝓪𝓷𝓮
13K views • 10 years ago
35:42Progressive Performance (Chrome Dev Summit 2016)
Chrome for Developers
34K views • 10 years ago
15:00Fastest browser engine by far at 500 FPS! Servo Webrender - CSS on the GPU part 1: Rust
𝓖𝓷𝓸𝓶𝓮💫𝓢𝓪𝓷𝓮
19K views • 10 years ago
37:11CheerpX: a WebAssembly-based x86 virtual machine in the browser, Yuri Iozzelli
WebAssembly NA
7K views • 6 years ago
1:00:34High Performance Web Sites and YSlow
Google TechTalks
90K views • 18 years ago
56:23Speed Up Your JavaScript
Google TechTalks
136K views • 17 years ago
1:13:41CppCon 2014: Chandler Carruth "Efficiency with Algorithms, Performance with Data Structures"
CppCon
235K views • 12 years ago
22:19Lars Bergstrom - Beyond Safety and Speed: How Rust Fuels Team Productivity
Rust Nation UK
18K views • 2 years ago
47:34RailsConf 2011: Aaron Patterson, "Double Dream Hands: So Intense!"
O'Reilly
26K views • 15 years ago
43:29Servo: Building a Parallel Browser
Linux.conf.au 2015 -- Auckland, New Zealand
23K views • 11 years ago
29:51Keynote: What is a Component (and Why)? - Luke Wagner, Distinguished Engineer, Fastly
The Linux Foundation
7K views • 3 years ago
1:00:58CppCon 2017: Chandler Carruth “Going Nowhere Faster”
CppCon
113K views • 9 years ago
1:16:58code::dive conference 2014 - Scott Meyers: Cpu Caches and Why You Care
NOKIA Technology Center Wrocław
231K views • 11 years ago
45:49Breaking the 1000ms Time to Glass Mobile Barrier
InfoQ
104K views • 13 years ago
36:16RustConf 2016 - A Modern Editor Built in Rust by Raph Levien
Confreaks
43K views • 10 years ago
40:34Charlie Marsh: uv: An Extremely Fast Python Package Manager
Jane Street
107K views • 2 years ago
8 comments from Hacker News
> no DOM access meant the only viable use cases were compute-heavy workloads like codecs and crypto, no, it didn't mean that, because the overhead is not a deal breaker: 1) you don't have to do the glue code (libs can do it for you) 2) there's overhead due to glue, but the overhead is so small that WASM web frameworks easily can compete with fast JS frameworks in DOM heavy scenarios. Source: Analysis of the creator of Leptos (a web framework based on WASM): ▶ this video
the JS layer is slow, indeed, but it shouldn't be that much slower that it meaningfully impacts frontend apps A demonstration of that by the creator of Leptos: ▶ this video
The founder of Leptos makes a pretty good argument [1] that the bottleneck for WASM isn't really the DOM and that they are already faster than some popular JS frameworks even with the current constraints. [1] ▶ this video
Wasm threads via SharedArrayBuffer have been a thing for like 5 years. In Rust you can use wasm-bindgen-rayon, for instance. DOM access is and has always been easily achieved through imports. It's performant, too: ▶ this video
Have you seen the video posted in the parent, by the creator of leptos (a rust webassembly framework)? ▶ this video The benchmarks being displayed have leptos beating react in nearly every category.
> if anyone tells you they need to use WebAssembly to make the UI snappy I'd advise you interrogate that assertion thoroughly. Get prepared to be blown away by Makepad [0]. I have no affiliation with them, but just watched their most recent conference presentation [1]. The slides were made with Makepad itself and included, embedded, a full-blown IDE, a synthesizer app, a Mandelbrot to zoom in endlessly, and more. All running at 120fps. The presentation is for the most part live-coding with this setup. What they want to do is bring coders and designers closer together, and while some code is in Rust they developed a DSL for the GUI parts that is close to how Figma works. These GUI's can run anywhere. And I couldn't help thinking "Why would people have complicated stacks to create Web 2.0 apps for the Google Web, when they have this?", in other words an opportunity to break out of the browser straitjacket. Btw. WebAssembly/WebGL isn't the only way in which Makepad is available. And while running well in the browser for a time, there were issues to be solved here (addressed in the presentation). And tbh this isn't a real answer to your assertion. Greg Johnston, creator of Leptos, has made a video with performance comparisons [2]. [0] link [1] link [2] ▶ this video
▶ this video This video might be helpful. Leptos uses Signals, borrowing ideas from SolidJS to update the DOM. There's no VirtualDOM like React. Svelte also doesn't use a VDOM. When there's a state change React has to rerender the entire VDOM tree and the diff it with the real DOM, whereas using the Signals model those frameworks make the change directly in the real DOM. I'm not sure how Svelte manipulates the DOM exactly but I it's similar to how it's done with Frameworks that use Signals such as Leptos and SolidJS. I would say Developer velocity is key if you're a developer. Svelte is a big winner here as it's mental model is easier to understand than React's.
Greg Johnston, author of the Leptos framework, did a pretty good video about this a few weeks ago[0]. The TLDR is (of course): it depends. WASM has no native access to the DOM, so all DOM manipulations from wasm-land have to go through JS bindings with all the (de)serialisation costs that go with crossing the language boundary. That eats up a lot of whatever performance gains you'd see from rust-on-wasm for pure compute. 0. ▶ this video