I've developed an application that performs a heavy computation when the user clicks a button. This operation is executed in a web assembly worker that I've compiled using Rust, allowing me to spawn multiple workers. While this works smoothly in Firefox, Chrome shows a significant slowdown, making it behave like I'm only using a single worker—even if I spawn multiple ones. Strange enough, when I have Chrome's DevTools open, the application runs nearly as quickly as it does in Firefox. However, this speed boost doesn't happen when only one worker is active. Is this a known issue with Chrome? I couldn't find anything about it and would prefer a solution that doesn't require having DevTools open all the time. Let me know if you need further information!
2 Answers
Noticing big performance variations between browsers typically suggests that the engines handle threading differently or some optimizations are being ignored. Chrome sometimes restricts background CPU tasks to conserve battery unless DevTools is open. Also, check how your WebAssembly threads are configured; ensuring you have proper threading support and that SharedArrayBuffer is available with the correct COOP/COEP headers is crucial. If not, it might revert to slower emulation, which would hinder performance. Prioritize checking those headers and worker flags first.
You might want to check if opening DevTools influences any default settings or limitations. For instance, it can disable caching or affect other optimizations that are often helpful during development. It’s quite possible that one of these settings is inadvertently making your app run as expected when DevTools is active.

I don’t use WebAssembly threads but spawn different workers with their isolated modules. Implementing multithreading within my WebAssembly module could be beneficial, but that sounds like a hefty undertaking. It really looks like Chrome’s limiting CPU usage unless DevTools is open, and I haven't found a workaround. Appreciate your help!