<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tuan Anh PHAM</title>
    <description>The latest articles on DEV Community by Tuan Anh PHAM (@tuananhpham).</description>
    <link>https://dev.to/tuananhpham</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1219120%2F8fc2b3f0-1723-4c2f-bf60-1c2bf7b82887.jpg</url>
      <title>DEV Community: Tuan Anh PHAM</title>
      <link>https://dev.to/tuananhpham</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tuananhpham"/>
    <language>en</language>
    <item>
      <title>Archived: Popular backend frameworks's performance ranking in 2024</title>
      <dc:creator>Tuan Anh PHAM</dc:creator>
      <pubDate>Sat, 05 Jul 2025 15:08:07 +0000</pubDate>
      <link>https://dev.to/tuananhpham/archived-popular-backend-frameworks-by-performance-benchmark-ranking-in-2024-25g7</link>
      <guid>https://dev.to/tuananhpham/archived-popular-backend-frameworks-by-performance-benchmark-ranking-in-2024-25g7</guid>
      <description>&lt;p&gt;&lt;a href="https://dev.to/tuananhpham/popular-backend-frameworks-performance-benchmark-1bkh"&gt;Updated analysis for 2025&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick result:
&lt;/h2&gt;

&lt;p&gt;based on &lt;a href="https://www.techempower.com/benchmarks/#hw=ph&amp;amp;test=fortune&amp;amp;section=data-r22" rel="noopener noreferrer"&gt;Techempower round 22&lt;/a&gt; october 2023&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftezea44juq9vp9z2lo74.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftezea44juq9vp9z2lo74.PNG" alt="Best Popular Backend Frameworks by performance comparaison and Ranking in 2024" width="650" height="240"&gt;&lt;/a&gt;&lt;em&gt;&lt;center&gt;Popular Backend Frameworks performance comparaison and ranking in 2024&lt;/center&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F93ham6dny2ypbw8ty36j.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F93ham6dny2ypbw8ty36j.PNG" alt="Best Backend by performance ranking in 2024" width="288" height="229"&gt;&lt;/a&gt;&lt;em&gt;&lt;center&gt;Best popular backend framework by performance ranking in 2024&lt;/center&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Motivation:
&lt;/h2&gt;

&lt;p&gt;As a tech lead, one of my key responsibilities entails the selection of optimal technologies that align with our business requirements and deliver an exceptional user experience. In pursuit of this goal, I find it imperative to conduct a thorough performance comparison among the leading frameworks commonly employed for building production-level backend web servers with SQL databases, all within a realistic environment.&lt;/p&gt;

&lt;p&gt;Unfortunately, many of the articles available on the internet that attempt to provide such performance comparisons often exhibit bias, lack realism, and are frequently outdated, rendering them unsuitable for use as reliable benchmarks. To date, I have yet to come across an article that offers a clear and unbiased performance assessment among the most widely utilized backend frameworks.&lt;/p&gt;

&lt;p&gt;My aim is to rectify this gap in information and provide a clear performance benchmark of the most popular backend frameworks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benchmark source data:
&lt;/h2&gt;

&lt;p&gt;Since 2013, TechEmpower has established a &lt;a href="https://www.techempower.com/benchmarks" rel="noopener noreferrer"&gt;backend framework benchmark&lt;/a&gt;. They meticulously define &lt;a href="https://github.com/TechEmpower/FrameworkBenchmarks/wiki/Project-Information-Framework-Tests-Overview" rel="noopener noreferrer"&gt;benchmark specifications&lt;/a&gt; and maintain an open-source approach that encourages contributions from the community. This benchmark has become a respected standard in the tech industry, serving as a reliable yardstick for technology competitors to assess the performance of their solutions (exemple &lt;a href="https://docs.gofiber.io/extra/benchmarks/" rel="noopener noreferrer"&gt;Go Fiber&lt;/a&gt;, &lt;a href="https://github.com/aspnet/Benchmarks" rel="noopener noreferrer"&gt;C# Asp.net&lt;/a&gt;, &lt;a href="https://github.com/just-js/techempower" rel="noopener noreferrer"&gt;JS Just&lt;/a&gt;). So I can trust the Techempower benchmark.&lt;/p&gt;

&lt;p&gt;I use data from TechEmpower benchmark &lt;a href="https://www.techempower.com/benchmarks/#hw=ph&amp;amp;test=fortune&amp;amp;section=data-r22" rel="noopener noreferrer"&gt;round 22&lt;/a&gt; (released on 2023-11-15). The benchmark has many frameworks (&amp;gt; 300), it can be overwhelming when trying to compare the most popular ones. &lt;br&gt;
My goal is to compare only popular, productive, realistic, near production-level, that companies use to build real backend. For all that, I make some filters on this benchmark:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Only some popular frameworks (see list later)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Only the &lt;a href="https://github.com/TechEmpower/FrameworkBenchmarks/wiki/Project-Information-Framework-Tests-Overview#fortunes" rel="noopener noreferrer"&gt;Fortunes test&lt;/a&gt; that’s the most realistic scenario for a backend web. The result is a number of requests per seconds to the database. Quote from &lt;a href="https://github.com/TechEmpower/FrameworkBenchmarks/wiki/Project-Information-Framework-Tests-Overview#fortunes" rel="noopener noreferrer"&gt;Fortunes test specification&lt;/a&gt;: “The Fortunes test exercises the ORM, database connectivity, dynamic-size collections, sorting, server-side templates, XSS countermeasures, and character encoding”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ORM (Object-Relational Mapper) is Full or Micro, and not Raw: for productivity reason:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full: “ORM that provide wide functionality, possibly including a query language”&lt;/li&gt;
&lt;li&gt;Micro: “less comprehensive abstraction of relation model”&lt;/li&gt;
&lt;li&gt;Raw: “no ORM is used at all, the platform raw database connectivity is used”&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Classification is Fullstack or Micro and not Raw: for productivity reason:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fullstack: “framework that provide wide features coverage including server side template, database connectivity, form processing and so on”&lt;/li&gt;
&lt;li&gt;Micro: “framework that provide request routing and some plumbing”&lt;/li&gt;
&lt;li&gt;Raw: “raw server, not a framework at all”&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Database: only Postgre for normalization&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I choose Popular Backend Frameworks (PBF):
&lt;/h2&gt;

&lt;p&gt;For programming languages, I use &lt;a href="https://www.tiobe.com/tiobe-index/" rel="noopener noreferrer"&gt;Tiobe index&lt;/a&gt; and &lt;a href="https://pypl.github.io/PYPL.html" rel="noopener noreferrer"&gt;PYPL index&lt;/a&gt;. The programming languages list is Java, C#, Go, Rust, Javascript (JS), Ruby, Python, Php&lt;/p&gt;

&lt;p&gt;For popular backend web frameworks, I use data from &lt;a href="https://www.similartech.com/categories/framework" rel="noopener noreferrer"&gt;SimilarTech&lt;/a&gt; and &lt;a href="https://trends.builtwith.com/framework" rel="noopener noreferrer"&gt;BuildWith&lt;/a&gt;. I do not choose small, simplistic, fully optimized frameworks which are not popular or can not be used for production-level general use cases.&lt;/p&gt;

&lt;p&gt;The final list of popular backend frameworks to benchmark is: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Java: Spring&lt;/li&gt;
&lt;li&gt;C#: Asp.net&lt;/li&gt;
&lt;li&gt;Go: Fiber&lt;/li&gt;
&lt;li&gt;Rust: Actix&lt;/li&gt;
&lt;li&gt;JS/Node: Express&lt;/li&gt;
&lt;li&gt;Ruby: Rails&lt;/li&gt;
&lt;li&gt;Python: Django&lt;/li&gt;
&lt;li&gt;Php: Laravel&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Go is a special case. Any Go frameworks satisfy my filters on “Classification=Full/Micro” and “ORM=Full/Micro”. But I want to have Go in the benchmark. So I need to do some logical deduction to be able to compare. &lt;br&gt;
Although Go Gin enjoys greater popularity compared to Go Fiber, I've decided to opt for Go Fiber due to its significantly superior performance. This choice is made with the intention of ensuring fairness.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdwrcj4yinzmshzgipi46.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdwrcj4yinzmshzgipi46.PNG" alt="Popular vs not popular backend frameworks" width="552" height="508"&gt;&lt;/a&gt; &lt;em&gt;&lt;center&gt;Popular vs not popular backend frameworks&lt;/center&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Raw benchmark data from TechEmpower round 22:
&lt;/h2&gt;

&lt;p&gt;Here’s the Fortunes tests &lt;a href="https://www.techempower.com/benchmarks/#hw=ph&amp;amp;test=fortune&amp;amp;section=data-r22&amp;amp;d=b&amp;amp;o=c&amp;amp;l=yykbr1-cn3&amp;amp;f=zijtuv-zik073-zik0zj-xan9xb-zik0zj-zik0zj-yyku7z-zik0zj-zik0zj-zhxjwf-zik0zj-zik0zj-zik0zj-zijocf-1ekf&amp;amp;c=c" rel="noopener noreferrer"&gt;result&lt;/a&gt;: (you can see my filters on Filters panel)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhvc8zxkf1lacu4mj1js.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhvc8zxkf1lacu4mj1js.PNG" alt="Techempower round 22 " width="763" height="262"&gt;&lt;/a&gt;&lt;em&gt;&lt;center&gt;Techempower round 22 raw data&lt;/center&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Each framework has its Fortunes requests number, then from that the relative ratio is built. The relative ratio expresses the relative performance of each framework over the worst one.&lt;/p&gt;

&lt;p&gt;I report the Fortunes request number and the relative ratio on this table, from that the ranking of backend framework performance is build:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzbyufnuif02bqtl3ju0s.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzbyufnuif02bqtl3ju0s.PNG" alt="Techempower results with normalization" width="363" height="226"&gt;&lt;/a&gt;&lt;em&gt;&lt;center&gt;Techempower results with normalization based on relative ratio over the worst one&lt;/center&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For Go Fiber, there’s no data with ORM, so I do use Raw data (No ORM) then compared with Rust Actix Raw and make deductions (= Fiber Raw / Actix Raw * Actix ORM(diesel)). So the Fortunes requests of Go Fiber may be not exact.&lt;/p&gt;

&lt;p&gt;For Php Laravel, there’s no data with Postgre database, so I use data with MySQL then compare and make deduction between Laravel and Symphony (=Laravel MySQL / Symphony MySQL * Symphony Postgre)&lt;/p&gt;

&lt;p&gt;Then finally, I use relative ratios to build the Popular Backend Frameworks’s performance table&lt;/p&gt;

&lt;h2&gt;
  
  
  Best popular backend frameworks by performance benchmark in 2024 (PBF benchmark)
&lt;/h2&gt;

&lt;p&gt;The row and column are ordered from the best to worst performance:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftezea44juq9vp9z2lo74.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftezea44juq9vp9z2lo74.PNG" alt="Best Popular Backend Frameworks by performance comparaison and Ranking in 2024" width="650" height="240"&gt;&lt;/a&gt;&lt;em&gt;&lt;center&gt;Best Popular Backend Frameworks by performance comparaison and Ranking in 2024&lt;/center&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;How to read the table: for example take the Rust column, then&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rust Actix is 119% more performant than C# Asp.net&lt;/li&gt;
&lt;li&gt;Rust Actix is 147% more performant than Go Fiber&lt;/li&gt;
&lt;li&gt;Rust Actix is 506% more performant than JS/Node Express&lt;/li&gt;
&lt;li&gt;Rust Actix is 712% more performant than Java Spring&lt;/li&gt;
&lt;li&gt;Rust Actix is 1166% more performant than Python Django&lt;/li&gt;
&lt;li&gt;Rust Actix is 1198% more performant than Ruby Rails&lt;/li&gt;
&lt;li&gt;Rust Actix is 2331% more performant than Php Laravel &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Take the C# Asp.net row, then&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rust Actix performance is 119% of C# Asp.net&lt;/li&gt;
&lt;li&gt;Go Fiber performance is 81% of C# Asp.net &lt;/li&gt;
&lt;li&gt;JS/Node Express performance is 23% of C# Asp.net&lt;/li&gt;
&lt;li&gt;Java Spring performance is 17% of C# Asp.net&lt;/li&gt;
&lt;li&gt;Python Django performance is 10% of C# Asp.net&lt;/li&gt;
&lt;li&gt;Ruby Rails performance is 10% of C# Asp.net&lt;/li&gt;
&lt;li&gt;Php Laravel performance is 5% of C# Asp.net&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Best popular backend frameworks by performance ranking in 2024
&lt;/h2&gt;

&lt;p&gt;Here's the final ranking in 2024 of backend performance:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Rust - Actix: 23.3 times more performance than the worst one&lt;/li&gt;
&lt;li&gt;C# - Asp.net: 19.6 times more performance than the worst one&lt;/li&gt;
&lt;li&gt;Go - Fiber: 15.9 times more performance than the worst one&lt;/li&gt;
&lt;li&gt;JS/Node - Express: 4.6 times more performance than the worst one&lt;/li&gt;
&lt;li&gt;Java - Spring: 3.3 times more performance than the worst one&lt;/li&gt;
&lt;li&gt;Python - Django: 2 times more performance than  the worst one&lt;/li&gt;
&lt;li&gt;Ruby - Rails: 1.9 times more performance than the worst one&lt;/li&gt;
&lt;li&gt;Php - Laravel: the last one 
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F93ham6dny2ypbw8ty36j.PNG" alt="Best Backends by performance ranking in 2024" width="288" height="229"&gt;&lt;em&gt;&lt;center&gt;Best Popular backend frameworks by performance ranking in 2024&lt;/center&gt;&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Bonus: TechEmpower Composite Score
&lt;/h2&gt;

&lt;p&gt;TechEmpower has multiple tests: Json serialization, Queries (single, multiple), Fortunes, Data update, Plaintext. Each test has a specific purpose and specification. &lt;/p&gt;

&lt;p&gt;To have a global view of all tests, they create a composite score with this formule (test results are normalized)&lt;br&gt;
Composite Score = Json *1 + SingleQuery * 0.75 + MultipleQueries * 0.75 + Fortunes * 1.5 + DataUpdate * 1.25 + Plaintext * 0.75&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8wemsschlaq9mvn0pora.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8wemsschlaq9mvn0pora.PNG" alt="Techemposer round 22’s composite score" width="704" height="208"&gt;&lt;/a&gt;&lt;em&gt;&lt;center&gt;Techempower round 22’s composite score&lt;/center&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This score is similar to my performance table, the 3 first places are exactly the same. Java Spring and JS Express swap their places and the 4 last places (Js Express, Ruby Rails, Php Laravel, Python Django) are very closed. In my analysis (only the Fortunes test), JS Express is 141% more performance than Java Spring, or with the Composite score, JS Express  is only 37% of Java Spring score. &lt;/p&gt;

&lt;p&gt;As composite score is a linear composition of other scores, the absolute value may not express the real performance, we should care about the ranking and relative magnitude of composite score.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion:
&lt;/h2&gt;

&lt;p&gt;This article provides a clear performance comparison among the most popular backend frameworks, based on the TechEmpower benchmark of round 22. This is purely data. The conclusions drawn from this data are open for anyone to interpret and analyze.&lt;/p&gt;

&lt;p&gt;One significant takeaway is related to technology selection. When choosing a backend technology stack, there are various parameters to consider, including popularity, performance, security, productivity, stability, reliability, maintainability, ecosystem, product domain, features, culture, team capabilities, and more. While performance is undoubtedly a crucial factor, especially in domains like Games, Finance, Trading, IoT, and others, it's just one piece of the puzzle.&lt;/p&gt;

&lt;p&gt;It's essential to note that this comparison primarily focuses on backend frameworks and not on programming languages. Drawing conclusions like "Rust outperforms  Java" or "C# surpasses JS" may seem valid from the data, it's a false conclusion from my analysis. For a direct comparison of programming languages, there are separate benchmarks available for that purpose  (like &lt;a href="https://benchmarksgame-team.pages.debian.net/benchmarksgame/index.html" rel="noopener noreferrer"&gt;this&lt;/a&gt; or &lt;a href="https://programming-language-benchmarks.vercel.app/" rel="noopener noreferrer"&gt;that&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The article also addresses the consideration of fairness in framework selection. It raises the question of why not choose extremely fast but less popular frameworks like JS Just, C++ Drogon, Java Vert.x. The rationale for selecting from the list of popular frameworks is to ensure a pragmatic choice that aligns with real-world scenarios.&lt;/p&gt;

&lt;p&gt;Imagine you have the responsibility to choose a framework to build a new backend as of today (the end of 2023 - mid 2024) and you know that one choice is made, you will live with that choice for the years to come. Will you bet on some experimental and small frameworks ? Or will you opt for a popular framework which is solid, well-established and battle-tested as in my list ? One fun thing, when I ask ChatGPT-4 the most popular backend frameworks, it returns the same list without any framework from Rust and Go.&lt;/p&gt;

&lt;p&gt;One last word, this benchmark is valid as of the end of 2023. Technology competitors work hard to improve their technology. The ranking in the next round of TechEmpower may change. Wait and see.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclaimer
&lt;/h2&gt;

&lt;p&gt;This analysis is based on data from the TechEmpower benchmark. I’m not responsible for the source data, only for my analysis.&lt;/p&gt;

</description>
      <category>backend</category>
      <category>performance</category>
      <category>ranking</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Best popular backend frameworks by performance of throughput benchmark comparison and ranking in 2025</title>
      <dc:creator>Tuan Anh PHAM</dc:creator>
      <pubDate>Sun, 02 Jun 2024 16:08:32 +0000</pubDate>
      <link>https://dev.to/tuananhpham/popular-backend-frameworks-performance-benchmark-1bkh</link>
      <guid>https://dev.to/tuananhpham/popular-backend-frameworks-performance-benchmark-1bkh</guid>
      <description>&lt;h2&gt;
  
  
  Quick result:
&lt;/h2&gt;

&lt;p&gt;based on &lt;a href="https://www.techempower.com/benchmarks/#section=data-r23" rel="noopener noreferrer"&gt;Techempower round 23&lt;/a&gt;, february 2025:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ranking&lt;/th&gt;
&lt;th&gt;Language&lt;/th&gt;
&lt;th&gt;Backend framework&lt;/th&gt;
&lt;th&gt;Fortunes RPS&lt;/th&gt;
&lt;th&gt;Relative ratio&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;1&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;C#&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Asp.net&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;609966&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;36.3&lt;/center&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;2&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Go&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Fiber&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;338096&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;20.1&lt;/center&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;3&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Rust&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Actix&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;320144&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;19.1&lt;/center&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;4&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Java&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Spring&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;243639&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;14.5&lt;/center&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;5&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;JS/Node&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Express&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;78136&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;4.7&lt;/center&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;6&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Ruby&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Rails&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;42546&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;2.5&lt;/center&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;7&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Python&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Django&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;32651&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;1.9&lt;/center&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;8&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Php&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Laravel&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;16800&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;1.0&lt;/center&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Performance ranking of popular backend frameworks in 2025&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fof7nh6o8jb37n9csx7d4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fof7nh6o8jb37n9csx7d4.png" alt="Best Popular Backend Frameworks by performance comparaison and Ranking in 2025" width="800" height="304"&gt;&lt;/a&gt;&lt;em&gt;&lt;center&gt;Performance comparison table of popular backend frameworks in 2025&lt;/center&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Motivation:
&lt;/h2&gt;

&lt;p&gt;As a tech lead, one of my key responsibilities entails the selection of optimal technologies that align with our business requirements and deliver an exceptional user experience. In pursuit of this goal, I find it imperative to conduct a thorough performance of throughput comparison among the leading frameworks commonly employed for building production-level backend web servers with SQL databases, all within a realistic environment.&lt;/p&gt;

&lt;p&gt;Unfortunately, many of the articles available on the internet that attempt to provide such performance comparisons often exhibit bias, lack realism, and are frequently outdated, rendering them unsuitable for use as reliable benchmarks. To date, I have yet to come across an article that offers a clear and unbiased performance assessment among the most widely utilized backend frameworks.&lt;/p&gt;

&lt;p&gt;My aim is to rectify this gap in information and provide a clear performance benchmark of the most popular backend frameworks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benchmark source data 2025:
&lt;/h2&gt;

&lt;p&gt;Since 2013, TechEmpower has established a &lt;a href="https://www.techempower.com/benchmarks" rel="noopener noreferrer"&gt;backend framework benchmark&lt;/a&gt;. They meticulously define &lt;a href="https://github.com/TechEmpower/FrameworkBenchmarks/wiki/Project-Information-Framework-Tests-Overview" rel="noopener noreferrer"&gt;benchmark specifications&lt;/a&gt; and maintain an open-source approach that encourages contributions from the community. This benchmark has become a respected standard in the tech industry, serving as a reliable yardstick for technology competitors to assess the performance of their solutions (exemple &lt;a href="https://docs.gofiber.io/extra/benchmarks/" rel="noopener noreferrer"&gt;Go Fiber&lt;/a&gt;, &lt;a href="https://github.com/aspnet/Benchmarks" rel="noopener noreferrer"&gt;C# Asp.net&lt;/a&gt;, &lt;a href="https://github.com/just-js/techempower" rel="noopener noreferrer"&gt;JS Just&lt;/a&gt;). So I can trust the Techempower benchmark.&lt;/p&gt;

&lt;p&gt;I use data from TechEmpower benchmark &lt;a href="https://www.techempower.com/benchmarks/#hw=ph&amp;amp;test=fortune&amp;amp;section=data-r23" rel="noopener noreferrer"&gt;round 23&lt;/a&gt; (released on 2025-02-24). The benchmark has many frameworks (&amp;gt; 300), it can be overwhelming when trying to compare the most popular ones. &lt;br&gt;
My goal is to compare only popular, productive, realistic, near production-level, that companies use to build real backend. For all that, I make some filters on this benchmark:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Only some popular frameworks (see list later)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Only the &lt;a href="https://github.com/TechEmpower/FrameworkBenchmarks/wiki/Project-Information-Framework-Tests-Overview#fortunes" rel="noopener noreferrer"&gt;Fortunes test&lt;/a&gt; that’s the most realistic scenario to measure throughput of a backend web. The result is a number of requests per seconds to the database. Quote from &lt;a href="https://github.com/TechEmpower/FrameworkBenchmarks/wiki/Project-Information-Framework-Tests-Overview#fortunes" rel="noopener noreferrer"&gt;Fortunes test specification&lt;/a&gt;: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The Fortunes test exercises the ORM, database connectivity, dynamic-size collections, sorting, server-side templates, XSS countermeasures, and character encoding&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ORM (Object-Relational Mapper) is Full or Micro, and not Raw: for productivity reason:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full: &lt;em&gt;ORM that provide wide functionality, possibly including a query language&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Micro: &lt;em&gt;less comprehensive abstraction of relation model&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Raw: &lt;em&gt;no ORM is used at all, the platform raw database connectivity is used&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Classification is Fullstack or Micro and not Raw: for productivity reason:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fullstack: &lt;em&gt;framework that provide wide features coverage including server side template, database connectivity, form processing and so on&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Micro: &lt;em&gt;framework that provide request routing and some plumbing&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Raw: &lt;em&gt;raw server, not a framework at all&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Database: only Postgre for normalization&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I choose Popular Backend Frameworks (PBF):
&lt;/h2&gt;

&lt;p&gt;For programming languages, I use &lt;a href="https://www.tiobe.com/tiobe-index/" rel="noopener noreferrer"&gt;Tiobe index&lt;/a&gt; and &lt;a href="https://pypl.github.io/PYPL.html" rel="noopener noreferrer"&gt;PYPL index&lt;/a&gt;. The programming languages list is Java, C#, Go, Rust, Javascript (JS), Ruby, Python, Php&lt;/p&gt;

&lt;p&gt;For popular backend web frameworks, I use data from &lt;a href="https://www.similartech.com/categories/framework" rel="noopener noreferrer"&gt;SimilarTech&lt;/a&gt; and &lt;a href="https://trends.builtwith.com/framework" rel="noopener noreferrer"&gt;BuildWith&lt;/a&gt;. I do not choose small, simplistic, fully optimized frameworks which are not popular or can not be used for production-level general use cases.&lt;/p&gt;

&lt;p&gt;The final list of popular backend frameworks to benchmark is: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Java: Spring&lt;/li&gt;
&lt;li&gt;C#: Asp.net&lt;/li&gt;
&lt;li&gt;Go: Fiber&lt;/li&gt;
&lt;li&gt;Rust: Actix&lt;/li&gt;
&lt;li&gt;JS/Node: Express&lt;/li&gt;
&lt;li&gt;Ruby: Rails&lt;/li&gt;
&lt;li&gt;Python: Django&lt;/li&gt;
&lt;li&gt;Php: Laravel&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Go is a special case. Any Go frameworks satisfy my filters on “Classification=Full/Micro” and “ORM=Full/Micro”. But I want to have Go in the benchmark. So I need to do some logical deduction to be able to compare. &lt;br&gt;
Although Go Gin enjoys greater popularity compared to Go Fiber, I've decided to opt for Go Fiber due to its significantly superior performance. This choice is made with the intention of ensuring fairness.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0pu3d95pqirj4bzy3qpk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0pu3d95pqirj4bzy3qpk.png" alt="Popular vs not popular backend frameworks in 2025" width="453" height="557"&gt;&lt;/a&gt; &lt;em&gt;&lt;center&gt;Popular vs not popular backend frameworks in 2025&lt;/center&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Raw benchmark data from TechEmpower round 23:
&lt;/h2&gt;

&lt;p&gt;Here’s the Fortunes tests &lt;a href="https://www.techempower.com/benchmarks/#section=data-r23&amp;amp;b=4&amp;amp;l=yykbr1-pa7&amp;amp;c=c&amp;amp;d=b&amp;amp;o=c&amp;amp;f=zijtuv-zik073-zik0zj-zik0zj-zik0zj-zik0zj-yyku7z-zieepr-zik0zj-zhxjwf-zik0zj-zik0zj-zik0zj-zik0zj-ziimf3-jz6rj" rel="noopener noreferrer"&gt;raw result&lt;/a&gt;: (you can see my filters on Filters panel)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn70dl57v0mftuham3aq7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn70dl57v0mftuham3aq7.png" alt="Techempower round 23 " width="800" height="372"&gt;&lt;/a&gt;&lt;em&gt;&lt;center&gt;Techempower round 23 raw data with filters:&lt;br&gt;
Framework: Fullstack, Micro &lt;br&gt;
Language: C#, Go, Java, Javascript, Php, Python, Ruby, Rust&lt;br&gt;
Database: Postgres&lt;br&gt;
ORM: Full, Micro&lt;br&gt;
&lt;/center&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The raw data is the Fortunes requests per second (RPS) on same hardware, same database Postgres, with framework full stack or micro, ORM full or micro.&lt;/p&gt;

&lt;p&gt;There’re 3 cases with logical deduction instead of raw data: Go Fiber, Php Laravel and Rust Actix:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go Fiber: there’s only data in Postgres database but without ORM tool. So I make the following logical deduction: Go Fiber Postgres with ORM  = Go Fiber Raw * (C# asp.net Postgres with ORM / C# asp.net Raw) = 411213 * (609966 / 741878). This deduction use a hypothesis that the Go Fiber ORM tool have the same performance as C# Asp.net ORM tool. This deduction gives an advantage to Go Fiber because I use the 1st rank framework to normalize.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Go Fiber has another test with option “pre-fork”. This test has the 1st ranking in my filtered Techempower, it has double results (requests per second) then the same Go Fiber without this option. This option lets run multiple processes of Go Fiber on each logical CPU. I do not keep this test in my analysis to be fair because if yes, other frameworks should activate the similar option.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Php Laravel: there’s no data with Postgre database, so I use data with MySQL then compare and make deduction between Laravel and Symphony (=Laravel MySQL / Symphony MySQL * Symphony Postgre)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rust Actix: In the official round 23, there’s any data for Rust Actix with my filters. So I have to take another run on date of 2025-03-15 &lt;a href="https://www.techempower.com/benchmarks/#section=test&amp;amp;runid=ace9c97f-253c-40d7-a730-c8a3b11b8d68" rel="noopener noreferrer"&gt;ace9c97f-253c-40d7-a730-c8a3b11b8d68&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once having normalized Fortunes RPS, I compute a relative ratio comparing each framework over a baseline, then finally build the performance ranking and the comparison table.&lt;/p&gt;

&lt;h2&gt;
  
  
  Result 1: Performance ranking of popular backend frameworks in 2025
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ranking&lt;/th&gt;
&lt;th&gt;Language&lt;/th&gt;
&lt;th&gt;Backend framework&lt;/th&gt;
&lt;th&gt;Fortunes RPS&lt;/th&gt;
&lt;th&gt;Relative ratio&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;1&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;C#&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Asp.net&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;609966&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;36.3&lt;/center&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;2&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Go&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Fiber&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;338096&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;20.1&lt;/center&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;3&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Rust&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Actix&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;320144&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;19.1&lt;/center&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;4&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Java&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Spring&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;243639&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;14.5&lt;/center&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;5&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;JS/Node&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Express&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;78136&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;4.7&lt;/center&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;6&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Ruby&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Rails&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;42546&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;2.5&lt;/center&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;7&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Python&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Django&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;32651&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;1.9&lt;/center&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;8&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Php&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;Laravel&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;16800&lt;/center&gt;&lt;/td&gt;
&lt;td&gt;&lt;center&gt;1.0&lt;/center&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Performance ranking of best popular backend frameworks in 2025&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here's the final performance ranking in 2025 of backend frameworks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;C# - Asp.net: 36.3 times more performant than the baseline&lt;/li&gt;
&lt;li&gt;Go - Fiber: 20.1 times more performant than the baseline&lt;/li&gt;
&lt;li&gt;Rust - Actix: 19.1 times more performant than the baseline&lt;/li&gt;
&lt;li&gt;Java - Spring: 14.5 times more performant than the baseline&lt;/li&gt;
&lt;li&gt;JS/Node - Express: 4.7 times more performant than baseline&lt;/li&gt;
&lt;li&gt;Ruby - Rails: 2.5 times more performant than the baseline&lt;/li&gt;
&lt;li&gt;Python - Django: 1.9 times more performant than the baseline&lt;/li&gt;
&lt;li&gt;Php - Laravel: the baseline&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Result 2: Performance comparison table of popular backend frameworks in 2025
&lt;/h2&gt;

&lt;p&gt;The row and column are ordered from the best to worst performance:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fof7nh6o8jb37n9csx7d4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fof7nh6o8jb37n9csx7d4.png" alt="Best Popular Backend Frameworks by performance comparaison and Ranking in 2025" width="800" height="304"&gt;&lt;/a&gt;&lt;em&gt;&lt;center&gt;Performance comparison table of best popular backend frameworks in 2025&lt;/center&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;How to read the table: for example take the C# Asp.net column, then:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;C# asp.net is 180% more performant than Go Fiber&lt;/li&gt;
&lt;li&gt;C# asp.net is 190% more performant than Rust Actix&lt;/li&gt;
&lt;li&gt;C# asp.net is 250% more performant than Java Spring&lt;/li&gt;
&lt;li&gt;C# asp.net is 781% more performant than JS/Node Express&lt;/li&gt;
&lt;li&gt;C# asp.net is 1434% more performant than Ruby Rail&lt;/li&gt;
&lt;li&gt;C# asp.net is 1868% more performant than Python Django&lt;/li&gt;
&lt;li&gt;C# asp.net is 3631% more performant than Php Laravel&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Take the Go Fiber row, then:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;C# asp.net performance is 180% of Go Fiber&lt;/li&gt;
&lt;li&gt;Rust Actix performance is 95% of Go Fiber&lt;/li&gt;
&lt;li&gt;Java Spring performance is 72% of Go Fiber&lt;/li&gt;
&lt;li&gt;JS/Node Express performance is 23% of Go Fiber&lt;/li&gt;
&lt;li&gt;Ruby Rails performance is 13% of C# Go Fiber&lt;/li&gt;
&lt;li&gt;Python Django performance is 10% of Go Fiber&lt;/li&gt;
&lt;li&gt;Php Laravel performance is 5% of Go Fiber&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Result 3: Evolution between 2024 vs 2025
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F02708qw13tlmp7abd7lm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F02708qw13tlmp7abd7lm.png" alt="Fortunes RPS and the relative ratio over the baseline per year and evolution" width="670" height="313"&gt;&lt;/a&gt;&lt;em&gt;&lt;center&gt;Evolution 1 year in % of Fortunes RPS between 2025 vs 2024&lt;/center&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My main remarks
&lt;/h2&gt;

&lt;p&gt;First, congratulations to the C# Asp.net framework for earning the top spot in the ranking. Its performance over the past year has improved by more than threefold, which is truly impressive.&lt;/p&gt;

&lt;p&gt;Second, I want to extend my highest praise to Java Spring. In just one year, its performance has increased ninefold, catapulting it into 4rd place.&lt;/p&gt;

&lt;p&gt;Third, I was most surprised by the drop in ranking for Rust Actix. It lost its No. 1 spot in 2024. Rust is renowned for its high performance, Linux and Windows even use it in their core operating systems. New system tools such as &lt;a href="https://github.com/chroma-core/chroma" rel="noopener noreferrer"&gt;Chroma&lt;/a&gt;, &lt;a href="https://github.com/qdrant/qdrant" rel="noopener noreferrer"&gt;QDrant&lt;/a&gt;, &lt;a href="https://github.com/kuasar-io/kuasar" rel="noopener noreferrer"&gt;Kuasar&lt;/a&gt; are now written in Rust instead of Go or C++. However, achieving top performance in a backend web server requires tuning every layer of the framework, from receiving an HTTP request to the database driver, not just optimizing the runtime.&lt;/p&gt;

&lt;p&gt;Finally, I see two clear groups of frameworks based on performance. The first, with compiled languages (C#, Go, Java, Rust), delivers higher throughput. The second, with interpreted languages (JavaScript, Ruby, Python, PHP), shows lower performance. This outcome isn’t surprising, since a framework’s speed generally reflects the characteristics of its underlying language.&lt;/p&gt;

&lt;p&gt;One last thing, Fortunes test is about throughput performance. There're data for latency (I may add to my analysis). I'd like to see memory usage, to have a better view on performance (throughput, latency, memory). Hope that Techempower update later the specification and add metrics on memory for all the tests. &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion:
&lt;/h2&gt;

&lt;p&gt;This article provides a clear performance comparison among the most popular backend frameworks, based on the Fortunes test of TechEmpower benchmark of round 23. This is purely data. The conclusions drawn from this data are open for anyone to interpret and analyze.&lt;/p&gt;

&lt;p&gt;One significant takeaway is related to technology selection. When choosing a backend technology stack, there are various parameters to consider, including popularity, performance, security, productivity, stability, reliability, maintainability, ecosystem, product domain, features, culture, team capabilities, and more. While performance is undoubtedly a crucial factor, especially in domains like Games, Finance, Trading, IoT, and others, it's just one piece of the puzzle.&lt;/p&gt;

&lt;p&gt;It's essential to note that this comparison primarily focuses on backend frameworks and not on programming languages. Drawing conclusions like "Rust outperforms  Java" or "C# surpasses JS" may seem valid from the data, it's a false conclusion from my analysis. For a direct comparison of programming languages, there are separate benchmarks available for that purpose  (like &lt;a href="https://benchmarksgame-team.pages.debian.net/benchmarksgame/index.html" rel="noopener noreferrer"&gt;this&lt;/a&gt; or &lt;a href="https://programming-language-benchmarks.vercel.app/" rel="noopener noreferrer"&gt;that&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The article also addresses the consideration of fairness in framework selection. It raises the question of why not choose extremely fast but less popular frameworks like JS Just, C++ Drogon, Java Vert.x. The rationale for selecting from the list of popular frameworks is to ensure a pragmatic choice that aligns with real-world scenarios.&lt;/p&gt;

&lt;p&gt;Imagine you have the responsibility to choose a framework to build a new backend as of today and you know that one choice is made, you will live with that choice for the years to come. Will you bet on some experimental and small frameworks ? Or will you opt for a popular framework which is solid, well-established and battle-tested as in my list ?&lt;/p&gt;

&lt;p&gt;One last word, this benchmark is valid as of february 2025. Technology competitors work hard to improve their technology. The ranking in the next round of TechEmpower may change. Wait and see.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/tuananhpham/archived-popular-backend-frameworks-by-performance-benchmark-ranking-in-2024-25g7"&gt;Archived analysis of 2024&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclaimer
&lt;/h2&gt;

&lt;p&gt;This analysis is based on data from the TechEmpower benchmark. I’m not responsible for the source data, only for my analysis.&lt;/p&gt;

</description>
      <category>backend</category>
      <category>performance</category>
      <category>productivity</category>
      <category>ranking</category>
    </item>
    <item>
      <title>Uber’s technology history learning</title>
      <dc:creator>Tuan Anh PHAM</dc:creator>
      <pubDate>Wed, 15 May 2024 08:52:35 +0000</pubDate>
      <link>https://dev.to/tuananhpham/ubers-technology-history-learning-4335</link>
      <guid>https://dev.to/tuananhpham/ubers-technology-history-learning-4335</guid>
      <description>&lt;h2&gt;
  
  
  Motivation
&lt;/h2&gt;

&lt;p&gt;After reading an &lt;a href="https://www.linkedin.com/pulse/brief-history-scaling-uber-josh-clemm-dfqgc/?trackingId=sfIpkKgz49d3lOC53VJhAA%3D%3D"&gt;article&lt;/a&gt; detailing Uber’s technology history as shared by their engineering team, I have some reflections to share. My article comprises two sections: firstly, a summary of the original piece, followed by my personal insights and observations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Uber Backend Technology Evolution Timeline
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;2008: Uber was founded.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2009: Initially, Uber utilized the LAMP stack, with PHP as the primary programming language for the backend and MySQL as the main database.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2011: Uber became an early adopter of Node.js for its dispatch service and employed Python (Flask) for its API service, alongside MongoDB/Redis and PostgreSQL. This marked the transition from PHP to Node.js and Python.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2013: The architecture shifted from a monolithic structure to microservices, with Python serving as the primary framework for these microservices. This transition introduced significant operational complexity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2014: A NoSQL database named Schemaless was created on top of MySQL, resembling Google Bigtable, to store trip data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2016: The mobile app underwent a rewrite, utilizing RIP architecture.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2017: The tech department underwent a reorganization with the implementation of Project Ark.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2018: Following the reorganization, two major changes were made to the technical stack:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Java and Go were adopted as the main backend languages, replacing Python and JavaScript (Node.js), aiming for type safety and improved performance.&lt;/p&gt;

&lt;p&gt;Domain Driven Development (DDD) started being implemented as the main architectural pattern, replacing microservices, facilitated by the shift to static types languages like Java and Go.&lt;/p&gt;

&lt;p&gt;Consequently, the number of Git repositories was reduced from 12,000 to 4.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;2020: The main dispatch API (gateway) previously built with Node.js was replaced by Go, as Node.js (and JavaScript) were considered deprecated.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2021: Google Cloud Spanner was adopted as the primary SQL distributed database.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  My learning
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Nodejs&lt;/strong&gt;: was never the primary backend framework at Uber. Instead, it was utilized only for the dispatch service. This decision in 2011 was made due to Node.js’s superior performance at the time. Uber phased out Node.js in favor of Go from 2018 to 2020. As of 2024, numerous articles still reference Uber’s use of Node.js, despite its obsolescence since 2020.&lt;br&gt;
Python served as the main backend language from 2011 to 2018, handling all other API services besides the dispatch service in Nodejs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Java/Go&lt;/strong&gt;: In 2018, Uber replaced Python with Java/Go as the primary backend languages to gain “type safety” (for me, it means a better quality, higher productivity, easier to maintain) and performance&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Database shift&lt;/strong&gt;: The company initially started with classical SQL databases, then transitioned to NoSQL (2014) before reverting back to a distributed SQL (2021).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paradigm shift&lt;/strong&gt;: Arguably, the most significant change occurred during 2018–2020 when Uber shifted from scripting languages (JavaScript, Python) to statically typed languages (Java/Go). This change not only involved switching programming languages but also represented a significant shift in mindset.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architecture shift&lt;/strong&gt;: Since 2020, with the coming of static typed languages, domain design (Domain Driven Design — DDD) has become the main architecture for backend instead of microservices approach. They introduce a concept of Domain-Oriented Microservice Architecture, that regroups microservices inside a domain. For me, this Uber “domain architecture” is just a refactoring of existing microservices that follow the concept of domain, not really a clean DDD architecture.&lt;/p&gt;

&lt;p&gt;The excessive popularity of microservices in the scripting language world may stem from differences in the appreciation of Object-Oriented Programming (OOP), which forms the foundation of statically typed languages.&lt;/p&gt;

&lt;p&gt;The article fails to elaborate on how these major transitions occurred. It is speculated that the reorganization with Project Ark in 2017 brought in a wave of new engineers with backgrounds in statically typed languages and OOP, facilitating the change.&lt;/p&gt;

&lt;p&gt;All these significant shifts occurred during Thuan Pham’s tenure as CTO from 2013 to 2020 (he is not my uncle 🙂) .&lt;/p&gt;

</description>
      <category>node</category>
      <category>go</category>
      <category>backend</category>
      <category>uber</category>
    </item>
  </channel>
</rss>
