I don't get what these benchmarks are supposed to do. I mean, it's great that a server takes 5 μs to complete a request, but when my own code takes 10 ms to run, does it really matter? It's 2,000 times slower, it's not like the webserver is the bottleneck...
To serve a single client, it doesn't matter, but when you're serving more than a few thousand of clients concurrently, there's benefits to a faster web-server. I mean, more concurrent clients on the same hardware, better average/worst-case latency, need for less hardware, less chance of a bottleneck...
That still doesn't make much sense. The gains of sticking with a proven, solid server which you are familiar with surely outweigh the 0.5% speed increase.
Misleading title. I expected to find a comparison of various webservers. Instead it looks like release notes from somebody's web framework.
Incidentally, the proposed HTML syntax in the 2nd half of the article is terrible. Developers have been closing HTML tags for 15 years now, to the point where we've associated little pyramids with correctness. All this syntax does is make all your code look broken all the time.
These are comparisons of various Haskell webservers, running the same micro benchmark, and the given number for Warp is provided. There are links to older benchmarks against servers in other languages.
Look for the big graph with different columns for different webservers.
Looking at the github repo, they're comparing a rails app (full MVC, router, etc) against a node app (regex-based routing) to a snap application, which unless I'm missing something about snap actually seems to be two different applications, one to serve files and one that responds "pong".
Instead of a rails app they should have benchmarked a rack app.
The article mentions the "pong" benchmark which seems to reside here: https://github.com/snoyberg/benchmarks. Looking at the code is doesn't do anything besides answering "pong" to any request so it's mostly about testing the overhead of the webserver, not its resilience against high loads.
I may be wrong, but with those benchmarks, the "typical" servers are configured to load the text "PONG" from a file as opposed to the haskell servers that are hard-coded to do it. Surely I/O gives them a massive disadvantage?