We published in 2014 the results of TechEmpower’s benchmark of various web frameworks, a term including web platforms and micro-frameworks. A year later, they have published a new set of results outlining important changes in the performance of top 10 web frameworks. Challenged by this competition for the fastest web framework, a number of 133 contributors have submitted 2,835 git commits, some frameworks managing to considerably raise the number of responses per second (RPS), while other have seen modest improvements.
This year’s tests benchmarked ~125 web frameworks on two hardware configurations: Xeon E5 (same as last year), and Amazon C3.Large, a Xeon E5-2680 2-vCPU processor running on EC2 (last year it was M1.Large). All tests are executed on Linux. The benchmark performs different types of requests: a “Hello, World!” JSON text, a row from a database, multiple rows from a database, all rows from a database, updating data in a database, a “Hello, World!” plain text. There are important differences in how web frameworks react to these different types of tests. We present below the top 10 and a few other more known web frameworks for the JSON request.
(click on image to enlarge it)
Here are our observations:
- This year’s best performing framework doubled the RPS of last year one’s on the same hardware, from 1.05M to 2.2M RPS.
- The best performer is LWAN, a newcomer.
- Top 10 frameworks are written in C, C++ or Java.
- There are very important differences between the results on Dell Xeon E5 and C3.Large EC2. We expected better numbers on Dell Xeon but not 25 times better.
- There are important changes in top 10 for the two hardware configurations.
- The top framework on C3.Large EC2 is a relatively new and unknown framework called Ur/Web written in Ur, inspired by ML and Haskell and optimized for speed.
- While some frameworks have made great progresses since last year, some have barely improved. While Go and Node.js were in top 10, now they are #19 and, respectively, #37.
- Dart has made important progress from 54,896 to 243,999 RPS but it is still far behind on #33.
Those interested in improving the performance of their preferred framework are invited to contribute and submit pull requests. The Source Code and Requirements page provides detail on each type of test performed and other related information. Comparing the Performance of Various Web Frameworks provides more details on how testing is conducted and general observations about this benchmark.