2024 年最热门后端框架性能基准比较与排名
速效:
基于Techempower 2023 年 10 月22 日轮次
动机:
作为技术主管,我的主要职责之一是选择符合业务需求、能够提供卓越用户体验的最佳技术。为了实现这一目标,我认为有必要在真实的环境中,对常用的构建生产级后端 Web 服务器(使用 SQL 数据库)的领先框架进行全面的性能比较。
遗憾的是,互联网上许多试图提供此类性能比较的文章往往存在偏见,缺乏现实性,而且经常过时,因此不适合用作可靠的基准测试。到目前为止,我还没有看到一篇文章能够对最广泛使用的后端框架进行清晰、公正的性能评估。
我的目标是弥补信息方面的差距,并提供最流行的后端框架的清晰性能基准。
基准源数据:
自 2013 年以来,TechEmpower 建立了后端框架基准测试。他们精心定义基准测试规范,并坚持开源方式,鼓励社区贡献。该基准测试已成为科技行业备受推崇的标准,成为技术竞争对手评估其解决方案性能的可靠标尺(例如Go Fiber、C# Asp.net、JS Just)。因此,我完全信任 Techempower 基准测试。
我使用的数据来自 TechEmpower 基准测试第 22 轮(发布于 2023 年 11 月 15 日)。该基准测试涵盖了超过 300 个框架,如果要比较其中最流行的框架,可能会让人不知所措。
我的目标是只比较那些公司用于构建真实后端的流行、高效、实用且接近生产级别的框架。为此,我在此基准测试中做了一些筛选:
-
仅介绍一些流行的框架(见后面的列表)
-
只有Fortunes 测试才是后端 Web 最真实的场景。测试结果是每秒向数据库发出的请求数。引自Fortunes 测试规范:“Fortunes 测试考察 ORM、数据库连接、动态大小集合、排序、服务器端模板、XSS 防御措施和字符编码。”
-
ORM(对象关系映射器)是完整或微型的,而不是原始的:出于生产力的原因:
- 完整版:“提供广泛功能的 ORM,可能包括查询语言”
- 微观:“关系模型的抽象不够全面”
- 原始:“根本不使用 ORM,使用平台原始数据库连接”
-
出于生产力原因,分类为全栈或微型而不是原始:
- 全栈:“提供广泛功能覆盖的框架,包括服务器端模板、数据库连接、表单处理等”
- Micro:“提供请求路由和一些管道的框架”
- 原始:“原始服务器,根本不是框架”
-
数据库:仅 Postgre 用于规范化
我如何选择流行的后端框架(PBF):
对于编程语言,我使用Tiobe 索引和PYPL 索引。编程语言列表包括 Java、C#、Go、Rust、Javascript (JS)、Ruby、Python、Php。
对于流行的后端 Web 框架,我使用SimilarTech和BuildWith的数据。我不会选择那些小型、简单、完全优化、不流行或无法用于生产级通用用例的框架。
最终的流行后端框架基准测试列表如下:
- Java:Spring
- C#:Asp.net
- 纤维
- Rust:Actix
- JS/Node:Express
- Ruby:Rails
- Python:Django
- Php:Laravel
Go 是个特例。任何 Go 框架都满足我的“Classification=Full/Micro”和“ORM=Full/Micro”筛选条件。但我希望 Go 能参与基准测试。因此,我需要进行一些逻辑推理才能进行比较。
尽管 Go Gin 比 Go Fiber 更受欢迎,但我还是决定选择 Go Fiber,因为它的性能明显更胜一筹。做出这一选择是为了确保公平。
TechEmpower 第 22 轮的原始基准数据:
这是 Fortunes 测试的结果:(您可以在“过滤器”面板上看到我的过滤器)
每个框架都有其 Fortune 请求数,然后据此建立相对比率。相对比率表示每个框架相对于最差框架的相对性能。
我把 Fortunes 的请求数和相对比例列在这张表上,以此为基础建立后端框架的性能排名:
对于 Go Fiber,没有 ORM 数据,所以我使用原始数据(无 ORM),然后与 Rust Actix Raw 进行比较并进行推导(= Fiber Raw / Actix Raw * Actix ORM(diesel))。因此,Go Fiber 的 Fortunes 请求可能不准确。
对于 Php Laravel,没有 Postgre 数据库的数据,因此我使用 MySQL 的数据,然后在 Laravel 和 Symphony 之间进行比较和推断(=Laravel MySQL / Symphony MySQL * Symphony Postgre)
最后,我使用相对比率来构建流行后端框架的性能表
2024 年性能基准最佳的流行后端框架(PBF 基准)
行和列按性能从最好到最差的顺序排列:
如何阅读表格:例如,以 Rust 列为例,然后
- Rust Actix 的性能比 C# Asp.net 高 119%
- Rust Actix 的性能比 Go Fiber 高 147%
- Rust Actix 的性能比 JS/Node Express 高出 506%
- Rust Actix 的性能比 Java Spring 高 712%
- Rust Actix 的性能比 Python Django 高 1166%
- Rust Actix 的性能比 Ruby Rails 高 1198%
- Rust Actix 的性能比 Php Laravel 高 2331%
取 C# Asp.net 行,然后
- Rust Actix 性能是 C# Asp.net 的 119%
- Go Fiber 性能是 C# Asp.net 的 81%
- JS/Node Express 性能是 C# Asp.net 的 23%
- Java Spring 的性能是 C# Asp.net 的 17%
- Python Django 性能是 C# Asp.net 的 10%
- Ruby Rails 的性能是 C# Asp.net 的 10%
- Php Laravel 性能是 C# Asp.net 的 5%
2024 年性能排名最佳的热门后端框架
以下是2024年后端性能的最终排名:
- Rust - Actix:性能比最差的版本高出 23.3 倍
- C# - Asp.net:性能比最差的版本高出 19.6 倍
- Go-Fiber:性能比最差的那个高出 15.9 倍
- JS/Node - Express:性能比最差的版本高出 4.6 倍
- Java - Spring:性能比最差的版本高出 3.3 倍
- Python - Django:性能比最差的版本高出 2 倍
- Ruby - Rails:性能比最差的版本高出 1.9 倍
- Php - Laravel:最后一个
2024 年性能排名最佳的热门后端框架
奖励:TechEmpower 综合评分
TechEmpower 有多种测试:Json 序列化、查询(单个、多个)、财富、数据更新、纯文本。每个测试都有特定的目的和规范。
为了全面了解所有测试,他们使用以下公式创建了一个综合分数(测试结果已标准化)
综合分数 = Json *1 + SingleQuery * 0.75 + MultipleQueries * 0.75 + Fortunes * 1.5 + DataUpdate * 1.25 + Plaintext * 0.75
这个分数和我的性能表很像,前三位完全一样。Java Spring 和 JS Express 互换了位置,最后四位(Js Express、Ruby Rails、Php Laravel、Python Django)的排名非常接近。在我的分析中(仅限 Fortunes 测试),JS Express 的性能比 Java Spring 高出 141%,或者说,如果用综合评分来算,JS Express 的性能只有 Java Spring 的 37%。
由于综合得分是其他得分的线性组合,其绝对值不一定能反映真实的表现,因此应该关心综合得分的排名和相对大小。
结论:
本文基于第 22 轮 TechEmpower 基准测试,对最流行的后端框架进行了清晰的性能比较。这纯粹是数据。任何人都可以解读和分析由此数据得出的结论。
一个重要的要点与技术选择有关。选择后端技术栈时,需要考虑各种参数,包括流行度、性能、安全性、生产力、稳定性、可靠性、可维护性、生态系统、产品领域、功能、文化、团队能力等等。虽然性能无疑是一个关键因素,尤其是在游戏、金融、交易、物联网等领域,但它只是众多因素中的一个方面。
需要注意的是,本次比较主要关注后端框架,而非编程语言。“Rust 优于 Java”或“C# 超越 JS”之类的结论,从数据上看似乎成立,但根据我的分析,这完全是错误的结论。对于编程语言的直接比较,有专门的基准测试可供参考(例如这个或那个)。
本文还探讨了框架选择中的公平性考量。它提出了一个问题:为什么不选择速度极快但不太流行的框架,例如 JS Just、C++ Drogon 和 Java Vert.x。从热门框架列表中进行选择的理由是确保做出符合实际场景的务实选择。
想象一下,从今天起(2023 年底 - 2024 年中),你有责任选择一个框架来构建新的后端,而且你知道一旦做出选择,你将在未来几年里一直承受着这个选择。你会选择一些实验性的小型框架吗?还是会选择一个像我列出的那样,稳定、成熟且久经考验的流行框架?有趣的是,当我向 ChatGPT-4 询问最流行的后端框架时,它返回的列表相同,但不包括任何 Rust 和 Go 框架。
最后补充一点,此基准截至2023年底有效。科技竞争对手正在努力改进自身技术。下一轮TechEmpower的排名可能会发生变化。拭目以待吧。
免责声明
此分析基于 TechEmpower 基准测试的数据。我不对源数据负责,仅对我的分析负责。
鏂囩珷鏉ユ簮锛�https://dev.to/tuananhpham/popular-backend-frameworks-performance-benchmark-1bkh