Rust/Tokio vs. Go for a server side app that requires high performance/low latency.
In a project I work on we need to develop a server application that will support transaction processing with extremely low latency (every ms counts - the lower we go the better). The volume of the traffic will also be large. The transaction consist mostly of a lot of networking (HTTP/other calls to third party services) + some light processing, like simple math operations, input/output formatting etc.
We are deciding between Rust (most likely with Tokio, but can also consider others) or Golang (with its goroutines). My intuition was that cooperative concurency of Tokio, should be faster than green threads, as it should require less memory shenanigans when switching between execution of futures than green threads when switching between routines. On top of that, I know that for non-concurent case rust is outperforming Go. Nevertheless, when googling the topic myself, I mostly found benchmarks (albeit benchmarks from "randoms on the internet") suggesting, that Go is either matching or outperforming Rust Tokio.
I would love to go with Rust, as till now I was mostly using it for my own small projects, and would like to go for it comercially. Nevertheless, if we cannot gain performance/lose latency with it, we will probably go with Go, as it has been previously used in the org + is simpler for most programmers.
Could you let me know what is your experience/thoughts/benchmarks? Can we expect (in average scenario), async Rust/Tokio (or other runtime) to outperform Goroutines?