We can define a pub-sub benchmark as:
- we have N topics
- the topics for K clients
- an average of M msgs / second
- here is a distribution of the latency of the messages
Then, for any given language, we can have a giant table of # cores, # RAM, above stats for entries.
Is there any report / data of this form for Elixir/Erlang vs other languages? In particular, I am curious how the per-heap GC / lightweight processes stack up vs JVM, Go, C, Rust.
 Many might claim that, of course, per thread GC beats JVM’s global GC. However, taking into account lag in residential networks and various JVM GC tweaks, who really knows ?
Haven’t seen anything like that – even on HN where people periodically get obsessed by those topics – but if you find it or author it and need contributors, I’d be down for checking it out and helping develop it.
At the time of writing this question, this pub-sub benchmark was important to me. Today, my mentality has shifted to: I’m willing to use a system that is only 50% as fast – if it simply avoids crashing & dying when under heavy load.
Interesting enough, I think GitHub - wasmerio/kernel-wasm: Sandboxed kernel mode WebAssembly runtime. has a good chance of winning both. One of the brilliant ideas here is: if you really really trust your wasm runtime (I do not have an opinion on this yet), you can just run it in the kernel instead of user space.
(1) this provides some advantage for any benchmarks
(2) this opens the possibility of a kernel that, instead of managing unix processes, manages lightweight wasm vm’s ( Writing Rust the Elixir way | Lunatic Blog is launching 20_000 wasm ‘processes’)