11 comments

[ 4.2 ms ] story [ 35.1 ms ] thread
I would love to see how Elixir compares in this matchup.
Maybe a better benchmark is to compare the time it takes to setup, test, and run a distributed benchmark all in all 3 + elixir.
I don't think the power of elixir sits in the benchmarks of this sort. Elixir is not a fast language.
It should be noted that this is a rather poor benchmark, comparing multiprocess SO_REUSEPORT and single process multithreading, as well as no consistent header set. Note that the crystal implementation is outputting about 92 bytes per request, whereas Go put out 142 bytes per request. Also, Go stdlib was tested with different settings then any of the others.
While it's understood that generalized benchmarks will never be representative, it's usually nice to see at least a few different examples (eg; parse/process/return large JSON blob, read objects from a db, do some math).

Regardless, I appreciate the author's taking the time to run these and share.

This is written in a very messy manner. The author clearly had gaps in their expertise, it was pointed to them and they made a mess of stikethroughs and updates. I'd rather people fully explore the areas they intend to write on, instead of mission out fundamentals and coming out with misleading results.
Another useless benchmark!
In addition to the other complaints that people are making, running on localhost has a lot of potential to skew client-server benchmarks.
Ugh... not a great article, I don't tend to read micro benchmark articles with baited breath for some nuggets of insight so no surprise really.

WRT Go:

Linux implementation of SO_REUSEPORT initially had a few big gotchas, such as incoming conns could get dropped if one of the multiple listening process terminates. I don't know what the state of affairs is now however it was an eminently sensible position not to support it on Linux way back when.

So fasthttp doesn't really have a good reputation for correctness[1], sacrificing much of the HTTP specs for speed. I can't imagine I'd ever want to use it.

[1] https://www.reddit.com/r/golang/comments/5w3ang/switching_fr...

(comment deleted)