V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
bronyakaka
V2EX  ›  程序员

web 框架性能排名 techempower 发布 2025 最新结果

  •  1
     
  •   bronyakaka · 7 天前 · 6553 次点击
    • 前十基本都是 rust 和 c++的框架
    • 接着是 java 的 quarkus, vert.x
    • 然后是 go 的 fasthttp
    • java spring 在 175 名
    • golang gin 在 284 名,fasthttp 排 85
    • python django 在 424 名

    关注的是 Fortunes , 模拟真实 Web 应用中常见的数据库读取和模板渲染场景,测试框架的全栈能力。

    完整见: https://www.techempower.com/benchmarks/#hw=ph&test=fortune&section=data-r23

    当然框架性能!=实际服务性能,不必较真

    第 1 条附言  ·  7 天前

    补几个php的强者:

    • workerman-pgsql:No.34
    • php-ngx-pgsql:No.31
    第 2 条附言  ·  7 天前
    第 3 条附言  ·  6 天前
    补充:goframe 排 79 ,远超 gin ,甚至比 fasthttp 更高(正常来说不是功能越少性能越强吗?😂)
    88 条回复    2025-03-16 01:50:49 +08:00
    sagaxu
        1
    sagaxu  
       7 天前
    gin 比 spring 慢,很意外
    bronyakaka
        2
    bronyakaka  
    OP
       7 天前
    @sagaxu 也许是适配了 jdk21 虚拟线程的原因?
    BeforeTooLate
        3
    BeforeTooLate  
       7 天前
    @bronyakaka 哈哈,应该把 php 补上,我一开以为 php 不在榜上,看下还是蛮多在 30-50 位置的 php 框架的么
    wryyyyyyyyyyyy
        4
    wryyyyyyyyyyyy  
       7 天前
    我们 python 是这样的,一直在垫底 😂
    DiamondYuan
        5
    DiamondYuan  
       7 天前   ❤️ 1
    rank 15 的是 just-js , 居然是 js
    bronyakaka
        6
    bronyakaka  
    OP
       7 天前
    iorilu
        7
    iorilu  
       7 天前
    gin 还不如 php 阿

    看了下 gin 和 python 得 fastapi 差不多, 怎么以前吹的好像 go 性能比 python 高很多倍一样
    bronyakaka
        8
    bronyakaka  
    OP
       7 天前
    @DiamondYuan just-js 的核心部分是用 C++ 编写的
    FarmerChillax
        9
    FarmerChillax  
       7 天前
    @iorilu 如果这么比,你应该拿 fasthttp 和 fastapi 比。。。你怎么不拿 Django 和 Gin 比 :p
    hugozach
        10
    hugozach  
       7 天前   ❤️ 1
    真假 我自己使用感觉 gin 很好啊
    PTLin
        11
    PTLin  
       7 天前   ❤️ 1
    侧面说明了 web 框架速度不重要,开发体验才重要,大公司遇到性能瓶颈直接横向扩展就行了
    liuliuliuliu
        12
    liuliuliuliu  
       7 天前   ❤️ 3
    看这个 tab 的评分会更完整一些

    https://www.techempower.com/benchmarks/#hw=ph&test=composite&section=data-r23

    其实里面排名靠前的,很多都是专门为跑分而生的框架,根本不具有实用性
    liuliuliuliu
        13
    liuliuliuliu  
       7 天前
    .net 在 35 名
    在 Composite scores 里在 18 名
    aloxaf
        14
    aloxaf  
       7 天前
    Rust 前面那一堆框架只有 axum 算有些代表性,话说以前的跑分王 actix 怎么缺席了。
    keakon
        15
    keakon  
       7 天前
    实际场景数据库才是瓶颈,Multiple queries 排第一的是个 js 框架
    z1829909
        16
    z1829909  
       7 天前
    @iorilu 就 web 服务这种场景, 感觉 python 的异步 io 比 golang 协程更有优势, 而且可以横向拓展, 通过多个进程弥补 python 自己对 cpu 利用率的问题. 比不上 php 也很正常, swoole workerman 这种也是异步的模型, php 可以使用一些 c 的拓展实现, swoole 更是用 c++写的. php 因为他狗屎的历史问题, 容易被低估.
    但是在一些需要比较精细地调度的场景下, python 多进程的粒度太糙, 造成很多浪费, 完全比不上 golang.
    w568w
        17
    w568w  
       7 天前   ❤️ 2
    @liuliuliuliu 我们生产服务器有一些接口是用的 actix-web ,实用性很高,写起来很爽,实际统计出异常的次数比其他语言( Python 、Go )低一个数量级

    @aloxaf 第二名的 xitca-web 其实就是 actix-web 前主要维护者 Nikolay 重写的,算是精神继承。他之前对 actix-web 里 unsafe 代码太多大为恼火,和其他成员沟通无效后离开项目,重写了他号称「 100% 安全 Rust 」的 xitca-web 。
    me1onsoda
        18
    me1onsoda  
       7 天前   ❤️ 2
    gin 这么简陋的框架居然不如 spring 这巨无霸。。
    zwzwzwzwzxt
        19
    zwzwzwzwzxt  
       7 天前
    @w568w #17 差点以为里面的 ntex 才是精神继承,看了它的 example 真的和 actix-web 的 API 几乎一模一样。。
    sagaxu
        20
    sagaxu  
       7 天前
    @bronyakaka 2# 没开 virtual threads 。

    @BeforeTooLate @iorilu php 有 swoole 和 webman ,大部分逻辑是 C 实现的,micro benchmark 不可能慢。

    @liuliuliuliu dotnet 不能用 mvc ,一用 mvc 性能损耗一小半。

    @me1onsoda gin 慢的很反直觉,有熟悉 gin 的去优化一下代码么
    https://github.com/TechEmpower/FrameworkBenchmarks/tree/master/frameworks/Go/gin
    wangtian2020
        21
    wangtian2020  
       7 天前
    第一个 nodejs 排 105 ,第一个 bun 排 149 。气冷抖,js 什么时候才能站起来
    tsanie
        22
    tsanie  
       7 天前   ❤️ 1
    35 - aspnetcore
    42 - aspnetcore-aot
    /doge
    FightPig
        23
    FightPig  
       7 天前
    我几乎一直用 rails, 每次看排名都几乎垫底
    hwdq0012
        24
    hwdq0012  
       7 天前   ❤️ 2
    java quarkus 是编译成原生应用(非 Jit ),
    just-js 也是无 gc , 非 jit 的
    .net core 是 jit 的

    .net core 也有 aot 编译成原生,.net 也有 aot 也能编译为原生应用,不过应该还不适用于所有设备

    jit 的话,能和.net core 打的应该没几个
    niubiman
        25
    niubiman  
       7 天前
    要想程序跑得快, 你不加班才奇怪
    boneyao
        26
    boneyao  
       7 天前   ❤️ 1
    我喜欢 django
    avenger
        27
    avenger  
       7 天前 via iPhone
    laravel 都能排到 152
    有点意外啊
    NessajCN
        28
    NessajCN  
       7 天前
    axum 还挺高
    rogwan
        29
    rogwan  
       7 天前
    flask 连前 500 都进不了,还是不配有名字?
    0x676e67
        30
    0x676e67  
       7 天前   ❤️ 1
    第一名是跑在手搓的 rust 协程
    lfitzgerald
        31
    lfitzgerald  
       7 天前
    @wryyyyyyyyyyyy 但是 python 开发爽啊
    sagaxu
        32
    sagaxu  
       7 天前
    @hwdq0012
    哪看到做 aot 了? Java aot 性能一般是不如 JIT 的。
    https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/frameworks/Java/vertx/pom.xml
    lesismal
        33
    lesismal  
       7 天前   ❤️ 9
    虽然能反映出很多框架的性能,但 techempower 也是我见过最逗比的没底线的 benchmark 之一了,plaintext 里包括 gnet 、evio 这种不完整 http 功能的简单拼接字符串方式的测试代码也可以放到排名结果里,甚至这种能拿个 plaintext 第一至今还贴在这种 repo 仓库里作为宣传工具误导不知情的同行。而且这样一来,助长了更多的不良之风:
    https://github.com/lesismal/nbio/issues/337#issuecomment-1663771688


    go 的 cpu 能力和 java 是差不多的,这种简单测试的结果不意外。

    帖子里一些人觉得 gin 简单,是一种错觉、简单与复杂对比错了层面:
    1. 在这个简单 http 功能测试对比 gin 和 spring 性能的场景,应该是看 http 基础部分实现的性能复杂度。单就 http 相关的实现,gin 等 go 框架在性能消耗上的浪费可能比 spring 还多,所以 fast 系能赢、gin 和其他几个基于标准库的难赢
    2. 各位对比的简单是作为 http 框架甚至框架生态圈的大的功能集合的简单与复杂、但是这部分与这个性能测试是没什么关系的

    实际工程中高并发场景,影响性能的重要因素之一是并发度,主要是连接数、协程池|线程池。
    java 非 netty 通常的业务线程池 size 设置不会特别大,几百几千,如果遇到并发很大并且一些请求阻塞时间较长时,这些阻塞时间长的请求会持续占用线程,线程池 size 小、等待得多了甚至整个线程池的 worker 都阻塞、临时耗尽了,其他连接的请求要排队,cpu 利用率就跑不上去、业务慢了。
    go 这种协程成本低,即使时 4c8g 这种硬件,随便也可以跑几万甚至 10w 级别的协程数量,对应的能服务的连接数就更多,所以部分连接的请求即使阻塞了、处理其他大部分连接的协程就被调度起来继续运行了、cpu 不用等待,因为几万甚至 10w 级别的协程数量远大于 response write 这些 syscall 、远大于下游的 db 操作、或者其他 io 等慢阻塞的并发度,所以整体上不会导致 cpu 利用率降低。

    我没有仔细研究这个测试,但没有找到实际测试的连接数并发度,也没有看到各个语言框架对应的 cpu 、内存消耗。
    不同的参数会有不同的阈值,如果只是一组参数测试得出结论,不能够准确说明实际业务中不同场景不同时段等的真实性能表现。
    wangyzj
        34
    wangyzj  
       7 天前   ❤️ 1
    哈哈哈,rust 性能真好
    但我又想起了,ts 编译器换成 go 的事情
    james122333
        35
    james122333  
       7 天前 via Android
    gin 使用的是标准库的 net/http
    这个本来效能就不好
    可以 gin+fasthttp 我在公司是使用这种方式的
    效能还不错
    当然私人用绝对是手搓一个出来
    james122333
        36
    james122333  
       7 天前 via Android
    再说一次 go 的标准库不是效能取向的
    guiyumin
        37
    guiyumin  
       7 天前 via iPhone
    Laravel 岂不是第 10000 名
    guotie
        38
    guotie  
       7 天前
    pg 才是最大赢家
    jmllx1963
        39
    jmllx1963  
       7 天前
    goframe 不错不错😌
    Al0rid4l
        40
    Al0rid4l  
       7 天前   ❤️ 3
    有些框架(甚至算不上框架)要么是刷分专用, 整得跟裸写 HTTP 服务器似的, 要么生态太小啥都得自己搓, 实际业务中间件加一堆就变得跟某些框架开箱即用差不多, 像 uwebsockets.js 这种一般不会有人直接拿来用, 但是可以用 elysia(bun 底层是 uwebsockets.js), just-js 这种更是基本上跟 js 也没啥关系了

    挑些主流框架看看就行, 像 axum, vertx-web 这两个是真的硬, asp minimal apis 也凑合, elysia 写点简单的东西挺不错的(但是据说 js 代码量多了会被 jscore 拖累), quarkus 值得关注
    back0893
        41
    back0893  
       7 天前
    workerman 这么强?
    min
        42
    min  
       7 天前
    不是吧,我 csharp dotnet 怎么退出前排了
    idealhs
        43
    idealhs  
       7 天前   ❤️ 1
    一说性能前几名,一看生态没人用
    Leviathann
        44
    Leviathann  
       7 天前
    只能说 vertx 是真 nb

    可能是被大规模使用的框架里面排名最高的
    maiyasu
        45
    maiyasu  
       7 天前   ❤️ 2
    这个一点参考价值都没有,不必当真,只有用框架出来的产品 产出比高才是王道
    BeforeTooLate
        46
    BeforeTooLate  
       7 天前
    @guiyumin 不是,居然再 152 名
    hwdq0012
        47
    hwdq0012  
       7 天前
    @sagaxu 我直接问 chat gpt 的,原生编译不就是 aot 吗
    hwdq0012
        48
    hwdq0012  
       7 天前
    @min 看第一页综合评分
    sagaxu
        49
    sagaxu  
       7 天前
    @hwdq0012 quarkus/vertx 支持原生编译 != 该评测使用了这个特性,显而易见还是用 JRE 跑的
    https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/frameworks/Java/vertx/vertx.dockerfile

    CMD ["java", "-Xms2G", "-Xmx2G", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-Djava.lang.Integer.IntegerCache.high=10000", "-Dvertx.disableMetrics=true", "-Dvertx.disableH2c=true", "-Dvertx.disableWebsockets=true", "-Dvertx.flashPolicyHandler=false", "-Dvertx.threadChecks=false", "-Dvertx.disableContextTimings=true", "-Dvertx.disableTCCL=true", "-Dvertx.disableHttpHeadersValidation=true", "-Dio.netty.buffer.checkBounds=false", "-Dio.netty.buffer.checkAccessible=false", "-jar", "target/vertx.benchmark-0.0.1-SNAPSHOT-fat.jar", "src/main/conf/config.json"]
    afeiche
        50
    afeiche  
       7 天前
    vert.x 性能是真可以,不过异步写法有时候定位问题比较麻烦,不知道后续上了虚拟线程后会不会有改善,另外好奇虚拟线程能不能把 java 的其他框架性能拉上来
    hwdq0012
        51
    hwdq0012  
       7 天前
    @sagaxu 嗯,那应该是虚拟机优化了, .net 没听过优化虚拟机的,应该是差在这了
    roundgis
        52
    roundgis  
       7 天前 via Android
    @wryyyyyyyyyyyy 夠用了
    bronyakaka
        53
    bronyakaka  
    OP
       7 天前
    @Al0rid4l gin 这种性能又低、差不多裸写 http ,用的人还不少的框架如何评价
    wryyyyyyyyyyyy
        54
    wryyyyyyyyyyyy  
       7 天前
    @lfitzgerald
    @roundgis

    是的,大部分应用也用不到 python 的性能上限
    redbule
        55
    redbule  
       7 天前
    asp.net core 看来是真不错,排名不低,易用性也高
    encro
        56
    encro  
       7 天前
    niubiman
        57
    niubiman  
       7 天前
    @redbule 业务代码写起来无比丝滑, 头发都保住了好多
    rick2c
        58
    rick2c  
       7 天前
    有大佬用 just-js 么
    Felldeadbird
        59
    Felldeadbird  
       7 天前
    啊!~GIN 竟然这么靠后。
    wweerrgtc
        60
    wweerrgtc  
       7 天前
    java8+spring2.x.x 的性能排第几名🐶
    xausky
        61
    xausky  
       7 天前
    第一个非 pg 的排名是 114 名,我严重怀疑 gin vs spring 的测试里面 mysql 拉了大胯
    yangxiaopeipei
        62
    yangxiaopeipei  
       7 天前
    我来看看有哪些比 laravel 更慢的
    sagaxu
        63
    sagaxu  
       7 天前
    @afeiche vertx 虚拟线程支持的还不太好,而且要到 Java 24 才能解决 synchronized 不能释放线程的问题。拿虚拟线程跑 worker 倒挺好的,偶尔 pin 住线程影响也不大。现阶段 vertx + kotlin coroutine 很方便,大部分场景是很不错的。除了文件系统 IO ,异步方式读 vfs cache 里的小文件,eventloop 和 worker 之间来回切换的开销(>10us)比阻塞读还大。
    edwinxe2v
        64
    edwinxe2v  
       7 天前
    18 位的 mORMot 非常冷门 - 是 Pascal 语言的。
    roundgis
        65
    roundgis  
       7 天前 via Android
    @wryyyyyyyyyyyy 實在不行還可以用 pypy 可以快一倍。
    des
        66
    des  
       7 天前
    @keakon 这个 just-js 我记得是基于 v8 的,写法约等于在写 c 几乎没有封装,所以才性能高。顺便说一下这个是起了多个进程的,多线程性能会下降
    des
        67
    des  
       7 天前
    @rick2c 玩具而已,就是 v8 加上 c 层的封装,其余全靠手撸
    Al0rid4l
        68
    Al0rid4l  
       7 天前
    @bronyakaka 不了解 go 不好评价, 如果真是这样那只能鉴定为有点抽象了🤣

    另外提醒前排, 榜单里 asp core 也差不多是个裸写 HTTP 服务器的, asp minimal 和 asp mvc 才是比较符合实际情况的

    实际上这个榜单的**主流框架**里除了少数几个能每项都有第一的 7-80%, 可能大部分框架能到第一 50%的都算得上是高性能了, 2-30%都算还可以, 所以也不用觉得某些框架性能很垃圾
    coyove
        69
    coyove  
       7 天前
    想起了在创业公司手撸的 go+epoll http/redis server 库,github.com/coyove/resh ,性能比 fasthttp 好得多

    但意义不大,再好的库 benchmark 时拉开的差距,在叠加实际业务后都没有任何意义,除非你的业务本质就是 lb ,proxy ,sfu/mcu 这类的
    Martin123123
        70
    Martin123123  
       7 天前
    正常来说,只需要在高级语言中选择自己熟悉并且最多人用的一种语言的框架就可以了,没必要为了速度专门切技术栈,最简单的例子就是 python ,只要语言足够热门,总会有造轮子的人去考虑性能,大部分 benchmark 场景下的性能没有意义
    Immortal
        71
    Immortal  
       7 天前
    @bronyakaka #53
    这是有历史原因,最早的 http 标准库和现在区别还是很大的,很多方便的 web 方法都是没有的,尤其是路由那块.
    同期的 web 框架选择不多,只有 beego/martini/gin/echo 这一类.gin 在这几个里算很简单轻量,所以选择的人多.你说用的人不少就是这个原因.
    你说的性能低应该是相对而言,几乎没听说过哪个项目用了 gin 是框架导致的性能瓶颈
    Kisesy
        72
    Kisesy  
       7 天前
    EminemW
        73
    EminemW  
       7 天前
    @lfitzgerald 残缺的代码提示真的爽吗
    3085570450tt
        74
    3085570450tt  
       7 天前
    @EminemW 你这属于是硬黑了,如果你写好 type hints, 然后再配置好 lsp 那些,很舒服的
    PopRain
        75
    PopRain  
       6 天前
    C# 不如 php ?打破认知了, 这个是不是拿简单框架和完整服务去比吧?
    maix27
        76
    maix27  
       6 天前
    框架性能不能弥补烂代码导致的性能问题,不必较真。
    也别说 C#了,唉,少舔点 C#吧,她自己亲爹都不管她死活,你越舔她越来劲,有些东西该死就让她死。
    fakeshadow
        77
    fakeshadow  
       6 天前   ❤️ 1
    @w568w 你想说的应该是 ntex ,它是 actix 原作者写的新框架。写 xitca-web 的另有其人。
    bronyakaka
        78
    bronyakaka  
    OP
       6 天前
    为什么 Goframe 这种功能很多的框架能排到 79 ,比 fasthttp 都强?有了解的老哥吗
    LeeReamond
        79
    LeeReamond  
       6 天前
    @w568w 具体业务代码怎么写呢,难道也是用 rust 写?
    w568w
        80
    w568w  
       6 天前   ❤️ 1
    @LeeReamond 是的,全部用 Rust 。我们的技术栈是 SeaORM (数据库访问)+ actix-web ( HTTP 服务器)+ utoipa ( Swagger 文档自动生成)+ Tokio (异步运行时)。非常爽的开发体验。

    虽然代码不便公开,但我以前给本科课程写的大作业示例的技术栈是一样,可以看一下 https://github.com/w568w/IntroDB-2023Spring-Backend/
    LeeReamond
        81
    LeeReamond  
       6 天前
    @w568w 不管怎么说,我感觉 rust 写业务代码还是很折磨的,最好能抽象出来用其他语言写。性能方面虽然快就是好,但其实没那么高需求。
    w568w
        82
    w568w  
       6 天前
    @LeeReamond 因人而异吧,我是从 Rust 接触后端开发的,所以没有思想包袱。反而是 Django 、Springboot 那些重型框架,我是一点都玩不转,啃几十页的文档纯属折磨自己。这个角度上来说,actix-web 才是「简单」的那一个。

    其他语言的后端框架我只用过 Python 的 sanic 和 fastapi ,不好点评。

    至于折不折磨,我只能说,一个人会了自然就觉得不折磨,不会自然写什么都觉得折磨… 抱着一个老后端的眼光看新框架,不适应是正常的。
    Outshine
        83
    Outshine  
       6 天前
    哈哈哈,看到 laravel 的排名,好想去推上 at 一下作者
    mmdsun
        84
    mmdsun  
       6 天前 via iPhone
    vertx +1 ,一直在用的框架。
    raw0xff
        85
    raw0xff  
       6 天前
    只用 go 的 net/http 标准库表示很慌,要不要换 fasthttp 试试
    zthxxx
        86
    zthxxx  
       6 天前
    next.js 真是非常均衡了,在每个测试项榜单里都是垫底的
    3085570450tt
        87
    3085570450tt  
       6 天前
    @Outshine 之前想试试 js 的框架,接触到了 AdonisJS 这个,是按照 laravel 的理念设计的, 真的惊艳到我了,之前啥都手写,这个很多都是直接命令行给你自动生成,只关心相关的业务就行
    yagamil
        88
    yagamil  
       6 天前
    node.js express 高于 go 的 gin ?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   928 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:25 · PVG 05:25 · LAX 14:25 · JFK 17:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.