7 ms·
I'm not sure which implementation browsers use but only one engine wasn't on average < 3x slower https://medium.com/wasmer/benchmarking-webassembly-runtimes-184
by ArrayBoundCheck 4y ago
I'm not sure which implementation browsers use but only one engine wasn't on average < 3x slower https://medium.com/wasmer/benchmarking-webassembly-runtimes-18497ce0d76e https://medium.com/wasmer/benchmarking-webassembly-runtimes-...
- azakai 4y ago(As I said in another comment, those are 4 microbenchmarks. The links I provided contain both real-world codebases and also large sets of varied benchmarks.)
- ArrayBoundCheck 4y agoVaried? You're joking they're all math This guy found sqlite to be 19x slower. https://ricomariani.medium.com/wasm-sqlite-for-web-products-a86bb172f8ab https://ricomariani.medium.com/wasm-sqlite-for-web-products-...
- SotCodeLaureate 4y ago> sqlite ... 19x slower But is this a failing of wasm or the system glue layer, that for something like sqlite/web has to go through js/browser/etc? Yes, I understand the importance of real-life tests like this, but how one is expected to go about testing wasm performance as such other than using benchmarks that are mostly arithmetic/logic and not syscall-type code?
- ArrayBoundCheck 4y agoHow you use it in real life has to be taken in consideration. From memory system like calls go through JS and there's no realloc. I didn't want to say it in my first comment because I notice the more someone writes the more likely others will argue. I rather someone else post the SQL benchmark but apparently everyone drank the kool aid and had no idea wasm isn't that fast. I certainly would rather use JS than write c++/rust. I wouldn't be surprised if that list of companies using wasm only use it for one or two large projects then stuck to js because of how much work wasm is
- azakai 4y agoSQLite is one of the many benchmarks covered in one of my 2 links. The slowdown there is just under 50%. (SQLite stresses not just wasm but also other Web APIs, like storage, which might explain different results in different types of benchmarks.)
- ArrayBoundCheck 4y agoCuriosity is getting to me. Why on earth would you use wasm outside of a browser instead of a container like most people? When you said I was wrong I knew right away you either never actually tested or you're talking about outside of the browser. If it wasn't clear I was talking about wasm in chrome/safari/firefox this entire time
- azakai 4y ago> When you said I was wrong I knew right away you either never actually tested or you're talking about outside of the browser. No, I actually was talking about the browser. And I have actually tested. You'll find my name on a bunch of public benchmark results about wasm and its predecessor asm.js, all in a Web context, * Various benchmark posts on Mozilla Hacks: https://hacks.mozilla.org/author/azakaimozilla-com/ https://hacks.mozilla.org/author/azakaimozilla-com/ * The original wasm paper: https://people.mpi-sws.org/~rossberg/papers/Haas,%20Rossberg,%20Schuff,%20Titzer,%20Gohman,%20Wagner,%20Zakai,%20Bastien,%20Holman%20-%20Bringing%20the%20Web%20up%20to%20Speed%20with%20WebAssembly.pdf https://people.mpi-sws.org/~rossberg/papers/Haas,%20Rossberg... * The WasmBoxC post: https://kripken.github.io/blog/wasm/2020/07/27/wasmboxc.html https://kripken.github.io/blog/wasm/2020/07/27/wasmboxc.html And specifically SQLite is a benchmark that I've looked at many times over the years. It's an important codebase. That's why I added it to the Emscripten benchmark suite, and why it is measured in that last link. (Fyi, I am one of the co-creators of WebAssembly, I created Emscripten, and I have been working in the compile-stuff-to-the-Web space for over a decade.)
- ArrayBoundCheck 4y agoThere's two things I always wanted to know 1. Why wasn't realloc part of the spec? When I looked at wasm and emscripten it appeared that realloc was essentially malloc+memcpy? That'd be painful when arrays are bigger than L2 or L3 cache. I think I heard arm cpu's all standardized to have virtual memory in 2005 or 2010 so I don't think arm hardware was an issue? 2. It seems like 100% of system calls would have to be implemented through javascript? Why wasn't there some things wasm implemented itself like a way to get time or rdtsc, realloc and other very common operations?