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

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

  •  1
     
  •   bronyakaka · 12 小时 34 分钟前 · 4409 次点击
    • 前十基本都是 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 条附言  ·  11 小时 59 分钟前

    补几个php的强者:

    • workerman-pgsql:No.34
    • php-ngx-pgsql:No.31
    第 2 条附言  ·  9 小时 22 分钟前
    71 条回复    2025-03-14 21:32:19 +08:00
    sagaxu
        1
    sagaxu  
       12 小时 21 分钟前
    gin 比 spring 慢,很意外
    bronyakaka
        2
    bronyakaka  
    OP
       12 小时 19 分钟前
    @sagaxu 也许是适配了 jdk21 虚拟线程的原因?
    BeforeTooLate
        3
    BeforeTooLate  
       12 小时 9 分钟前
    @bronyakaka 哈哈,应该把 php 补上,我一开以为 php 不在榜上,看下还是蛮多在 30-50 位置的 php 框架的么
    wryyyyyyyyyyyy
        4
    wryyyyyyyyyyyy  
       12 小时 2 分钟前
    我们 python 是这样的,一直在垫底 😂
    DiamondYuan
        5
    DiamondYuan  
       11 小时 59 分钟前   ❤️ 1
    rank 15 的是 just-js , 居然是 js
    bronyakaka
        6
    bronyakaka  
    OP
       11 小时 59 分钟前
    iorilu
        7
    iorilu  
       11 小时 58 分钟前
    gin 还不如 php 阿

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

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

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

    @aloxaf 第二名的 xitca-web 其实就是 actix-web 前主要维护者 Nikolay 重写的,算是精神继承。他之前对 actix-web 里 unsafe 代码太多大为恼火,和其他成员沟通无效后离开项目,重写了他号称「 100% 安全 Rust 」的 xitca-web 。
    me1onsoda
        18
    me1onsoda  
       10 小时 55 分钟前   ❤️ 2
    gin 这么简陋的框架居然不如 spring 这巨无霸。。
    zwzwzwzwzxt
        19
    zwzwzwzwzxt  
       10 小时 55 分钟前
    @w568w #17 差点以为里面的 ntex 才是精神继承,看了它的 example 真的和 actix-web 的 API 几乎一模一样。。
    sagaxu
        20
    sagaxu  
       10 小时 44 分钟前
    @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  
       10 小时 19 分钟前
    第一个 nodejs 排 105 ,第一个 bun 排 149 。气冷抖,js 什么时候才能站起来
    tsanie
        22
    tsanie  
       10 小时 10 分钟前   ❤️ 1
    35 - aspnetcore
    42 - aspnetcore-aot
    /doge
    FightPig
        23
    FightPig  
       10 小时 0 分钟前
    我几乎一直用 rails, 每次看排名都几乎垫底
    hwdq0012
        24
    hwdq0012  
       9 小时 53 分钟前   ❤️ 2
    java quarkus 是编译成原生应用(非 Jit ),
    just-js 也是无 gc , 非 jit 的
    .net core 是 jit 的

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

    jit 的话,能和.net core 打的应该没几个
    niubiman
        25
    niubiman  
       9 小时 46 分钟前
    要想程序跑得快, 你不加班才奇怪
    boneyao
        26
    boneyao  
       9 小时 45 分钟前   ❤️ 1
    我喜欢 django
    avenger
        27
    avenger  
       9 小时 43 分钟前 via iPhone
    laravel 都能排到 152
    有点意外啊
    NessajCN
        28
    NessajCN  
       9 小时 42 分钟前
    axum 还挺高
    rogwan
        29
    rogwan  
       9 小时 30 分钟前
    flask 连前 500 都进不了,还是不配有名字?
    0x676e67
        30
    0x676e67  
       9 小时 29 分钟前   ❤️ 1
    第一名是跑在手搓的 rust 协程
    lfitzgerald
        31
    lfitzgerald  
       9 小时 24 分钟前
    @wryyyyyyyyyyyy 但是 python 开发爽啊
    sagaxu
        32
    sagaxu  
       9 小时 21 分钟前
    @hwdq0012
    哪看到做 aot 了? Java aot 性能一般是不如 JIT 的。
    https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/frameworks/Java/vertx/pom.xml
    lesismal
        33
    lesismal  
       9 小时 19 分钟前   ❤️ 6
    虽然能反映出很多框架的性能,但 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  
       8 小时 48 分钟前   ❤️ 1
    哈哈哈,rust 性能真好
    但我又想起了,ts 编译器换成 go 的事情
    james122333
        35
    james122333  
       8 小时 42 分钟前 via Android
    gin 使用的是标准库的 net/http
    这个本来效能就不好
    可以 gin+fasthttp 我在公司是使用这种方式的
    效能还不错
    当然私人用绝对是手搓一个出来
    james122333
        36
    james122333  
       8 小时 41 分钟前 via Android
    再说一次 go 的标准库不是效能取向的
    guiyumin
        37
    guiyumin  
       8 小时 36 分钟前 via iPhone
    Laravel 岂不是第 10000 名
    guotie
        38
    guotie  
       8 小时 34 分钟前
    pg 才是最大赢家
    jmllx1963
        39
    jmllx1963  
       8 小时 27 分钟前
    goframe 不错不错😌
    Al0rid4l
        40
    Al0rid4l  
       8 小时 26 分钟前   ❤️ 1
    有些框架(甚至算不上框架)要么是刷分专用, 整得跟裸写 HTTP 服务器似的, 要么生态太小啥都得自己搓, 实际业务中间件加一堆就变得跟某些框架开箱即用差不多, 像 uwebsockets.js 这种一般不会有人直接拿来用, 但是可以用 elysia(bun 底层是 uwebsockets.js), just-js 这种更是基本上跟 js 也没啥关系了

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

    可能是被大规模使用的框架里面排名最高的
    maiyasu
        45
    maiyasu  
       7 小时 51 分钟前   ❤️ 1
    这个一点参考价值都没有,不必当真,只有用框架出来的产品 产出比高才是王道
    BeforeTooLate
        46
    BeforeTooLate  
       7 小时 47 分钟前
    @guiyumin 不是,居然再 152 名
    hwdq0012
        47
    hwdq0012  
       7 小时 34 分钟前
    @sagaxu 我直接问 chat gpt 的,原生编译不就是 aot 吗
    hwdq0012
        48
    hwdq0012  
       7 小时 33 分钟前
    @min 看第一页综合评分
    sagaxu
        49
    sagaxu  
       7 小时 26 分钟前
    @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 小时 26 分钟前
    vert.x 性能是真可以,不过异步写法有时候定位问题比较麻烦,不知道后续上了虚拟线程后会不会有改善,另外好奇虚拟线程能不能把 java 的其他框架性能拉上来
    hwdq0012
        51
    hwdq0012  
       7 小时 22 分钟前
    @sagaxu 嗯,那应该是虚拟机优化了, .net 没听过优化虚拟机的,应该是差在这了
    roundgis
        52
    roundgis  
       7 小时 4 分钟前 via Android
    @wryyyyyyyyyyyy 夠用了
    bronyakaka
        53
    bronyakaka  
    OP
       6 小时 58 分钟前
    @Al0rid4l gin 这种性能又低、差不多裸写 http ,用的人还不少的框架如何评价
    wryyyyyyyyyyyy
        54
    wryyyyyyyyyyyy  
       6 小时 54 分钟前
    @lfitzgerald
    @roundgis

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

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

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

    但意义不大,再好的库 benchmark 时拉开的差距,在叠加实际业务后都没有任何意义,除非你的业务本质就是 lb ,proxy ,sfu/mcu 这类的
    Martin123123
        70
    Martin123123  
       2 小时 29 分钟前
    正常来说,只需要在高级语言中选择自己熟悉并且最多人用的一种语言的框架就可以了,没必要为了速度专门切技术栈,最简单的例子就是 python ,只要语言足够热门,总会有造轮子的人去考虑性能,大部分 benchmark 场景下的性能没有意义
    Immortal
        71
    Immortal  
       1 小时 48 分钟前
    @bronyakaka #53
    这是有历史原因,最早的 http 标准库和现在区别还是很大的,很多方便的 web 方法都是没有的,尤其是路由那块.
    同期的 web 框架选择不多,只有 beego/martini/gin/echo 这一类.gin 在这几个里算很简单轻量,所以选择的人多.你说用的人不少就是这个原因.
    你说的性能低应该是相对而言,几乎没听说过哪个项目用了 gin 是框架导致的性能瓶颈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2690 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 15:21 · PVG 23:21 · LAX 08:21 · JFK 11:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.