Comment

Michael Hrivnak

I was surprised at how slow the Go implementation of your webserver was, until I noticed you weren't using KeepAlive. When I turned that on (via -k to the ab tool), the Go implementation ran about 4x faster. The tornado implementation ran about 1.5x faster, and flask ran about the same.

Without KeepAlive, each request creates a new TCP connection, so a lot of extra time gets spent in the kernel. Presumably that's about the same amount of overhead for all of the implementations, so it's better to factor it out.

I would have tested the nodejs version you mentioned, but you didn't include the source. Although you did include source for a falcon-based implementation, so maybe that's what you actually tested instead of nodejs? The performance I saw of falcon vs. the others would fit the same relative results you got with "Node (express)".

Here are the results I got: https://gist.github.com/mhrivnak/b63230b64477798ee787ed5563afc2a2

Thanks for the comparison!