5 comments

[ 3.6 ms ] story [ 28.3 ms ] thread
Seems like Discord is data usage pattern has reach the limits of LRU cache and latency.

Nice detailed article, makes one think twice about using GC based language for cases like Discord.

go's experimental memory arenas feature could lessen the pain of gc in a lot of cases
Just use a language with better GC’s or one where you have the ability to manage memory yourself in hot paths
It's rather about Go's inadequacy and shortcomings as a language. They could write C# or Java Go-style and get much, much higher throughput and efficiency. C# also lets you write lower-level and/or Rust style code to push the language which is not an option in Go.
This is a situation where one of the biggest (maybe the biggest) chat applications has a bit of code that's run "every time a message is sent and every time a message is read".

In this instance Go's GC pauses were causing performance issues, they rewrote it in Rust with very good results.

This doesn't mean that your application needs to be written in Rust because Go "isn't performant" =)