发现一个框架性能对比网站,我把 rust/go/ Java /csharp/js/py 对比了下 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
bronyakaka
V2EX    程序员

发现一个框架性能对比网站,我把 rust/go/ Java /csharp/js/py 对比了下

  •  1
     
  •   bronyakaka 2024-03-26 23:39:20 +08:00 6104 次点击
    这是一个创建于 571 天前的主题,其中的信息可能已经有所发展或是发生改变。

    直接上 link:https://web-frameworks-benchmark.netlify.app/result?l=python,go,rust,java,Javascript,csharp

    这个网站好像定时会把流行框架最新版本拿来测试下性能,qps 之类的,上次测试刚好是昨天,时效性挺高。

    对比了下发现

    1 、js 的 uwebsockets 框架性能吊打其他框架( 20w qps ),不知道是咋做到的

    2 、紧接着是 java 的框架,主要是 activej ,这个好像没啥人用,应该属于那种专精性能的,qps 19.9w 。

    3 、然后就是 rust 的 actix 了,qps 19.5w

    4 、再往下很大都是 java 系列的,什么 vertx (这个听说过)、rapidoid 、jooby ,JIT 优化确实强

    5 、再往下就是 go 了,都说 go 性能一般,最好的是 fasthttp ,qps 在 17w 多,也不算差了,接着是 fiber 、gorouter ,还有字节的 hertz

    6 、rust 的 axum 性能比 gin 好,但要比 go 的 fasthttp 、fiber 差

    7 、接下来还是清一色的 go 框架,不得不吐槽 go web 框架是真的多,感觉都没啥区别。gin 、echo 在 12w qps

    8 、不出意料的垫底:python ,django qps 居然只有 1.6k ,这也太差劲了……

    9 、用的比较多的 spring 在 5w qps ,中游的样子,够用,并且生态比绝大部分框架都强

    当然真实项目的性能肯定没这么简单,这只是单纯测试框架处理请求的能力而已,别太较真

    30 条回复    2024-03-28 08:27:04 +08:00
    Maboroshii
        1
    Maboroshii  
       2024-03-27 00:22:50 +08:00
    确实不能太较真。。 拿 1.6k 的 django 来说,一个请求,框架本身占用的耗时才不到 1ms ,我在挂梯子访问 v 站的时候,所有请求耗时都至少 100ms 了。。
    bronyakaka
        2
    bronyakaka  
    OP
       2024-03-27 00:31:03 +08:00
    @Maboroshii 我列的是 256 个并发连接的 qps ,所以 1.6k 的 Django 实际一个请求要 6ms 差不多,这是没有业务逻辑的,比其他框架确实差很多
    renmu
        3
    renmu  
       2024-03-27 00:36:38 +08:00 via Android
    uwebsockets 用 c 和 c++写的
    bronyakaka
        4
    bronyakaka  
    OP
       2024-03-27 00:39:45 +08:00
    @renmu js 套壳吗?好像 js 经常这么干
    renmu
        5
    renmu  
       2024-03-27 00:43:39 +08:00 via Android
    @bronyakaka 套了一层绑定,js 下面性能比较高的框架是套了一层 uwebsockets ,比较看好 hyper-express ,有性能的同时又有了 express 的部分生态
    IdJoel
        6/span>
    IdJoel  
       2024-03-27 02:22:36 +08:00   1
    加上 PHP ,发现上了 swoole php 性能还是比 go 强
    lysShub
        7
    lysShub  
       2024-03-27 03:49:30 +08:00
    他 bench 的源码太简单了,和直接 accept tcp 应该没啥区别
    lysShub
        8
    lysShub  
       2024-03-27 03:51:52 +08:00
    go 最快的是 fasthttp , 可能是因为把路由写死了。。。

    https://github.com/the-benchmarker/web-frameworks/blob/master/go/fasthttp/main.go
    dyv9
        9
    dyv9  
       2024-03-27 05:39:24 +08:00 via Android
    打一份而已,需要这样操心吗?软件不光是性能问题,更是性价比问题。
    Trim21
        10
    Trim21  
       2024-03-27 06:09:06 +08:00 via Android
    @lysShub fasthttp 本就没有理由功能
    fox0001
        11
    fox0001  
       2024-03-27 06:54:18 +08:00 via Android
    有没有列出资源占用的对比?就是想看看付出的成本有多大
    6F321i77Df1W0Zka
        12
    6F321i77Df1W0Zka  
       2024-03-27 08:43:56 +08:00
    应该把 php 也加进来
    Kylinsun
        13
    Kylinsun  
       2024-03-27 09:11:20 +08:00
    @ing995683
    workerman 排第七(#^.^#)
    cbdyzj
        14
    cbdyzj  
       2024-03-27 09:23:10 +08:00
    用的 Java 版本有点老
    cndenis
        15
    cndenis  
       2024-03-27 09:28:09 +08:00
    Python 的框架需要 wsgi, 这家伙是直接用框架自带的 wsgiref 来测的吧
    nmap
        17
    nmap  
       2024-03-27 09:51:27 +08:00
    js/java 能排 c/c++/rust 前面,这网站不用看了
    wangtian2020
        18
    wangtian2020  
       2024-03-27 10:03:51 +08:00   1
    @nmap
    其他语言本来就是编译成 wasm 给 Javascript 打工,怎么就不用看了,不服气吗
    Goooooos
        19
    Goooooos  
       2024-03-27 10:16:08 +08:00
    @lysShub 测框架性能当然越简单越好
    mightybruce
        20
    mightybruce  
       2024-03-27 10:16:17 +08:00
    看这种网站和以上一些认知,我就不想说了, 你自己开心就好。
    simen513
        21
    simen513  
       2024-03-27 10:22:53 +08:00
    @wangtian2020 回 18 楼:这么说的话,shell 最牛逼,所有的程序,只要需要在 OS 上跑的,都得通过它调用,都是给它打工。 @.V.@
    Goooooos
        22
    Goooooos  
       2024-03-27 10:25:19 +08:00
    Java 能升级到 jdk21 并使用 zgc 和虚拟线程的话,性能应该会有点提升
    我的网关服务也升级后有稍微提升
    oaix
        23
    oaix  
       2024-03-27 10:38:38 +08:00
    这个数据有些诡异:

    吞吐=并发/平均响应时间

    但从数据上来看平均响应小的框架,QPS 反而不高。
    herozzm
        24
    herozzm  
       2024-03-27 11:16:54 +08:00
    go 的 fasthttp 算不上框架吧 只是一个路由
    xiaocaiji111
        25
    xiaocaiji111  
       2024-03-27 13:37:59 +08:00
    这玩意儿,看看就好,实际开发,接口一复杂,大家都一样了。比如一个接口 500ms ,框架本身是 10ms 还是 1ms 影响不是很大了。
    abersheeran
        26
    abersheeran  
       2024-03-27 13:46:26 +08:00
    打榜真没必要,开发体验大过一切。
    chendy
        27
    chendy  
       2024-03-27 13:58:37 +08:00
    有一定参考意义,像我这种啥都不懂的 java 农可以顺着找到不少好玩的东西
    但是实际项目开发,web 框架的性能,不说是最需要考虑的东西,但也可以说是最微不足道的东西了,一来十成甚至九成的性能瓶颈不在 web 层,二来在 web 层被打崩之前一般接入层就已经跑满了
    wu00
        28
    wu00  
       2024-03-27 14:11:36 +08:00
    eden1
        29
    eden1  
       2024-03-27 21:41:15 +08:00
    PHP 不配吗
    bianhui
        30
    bianhui  
       2024-03-28 08:27:04 +08:00
    每几个月,就有这样一篇比较
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     884 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 22:30 PVG 06:30 LAX 15:30 JFK 18:30
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86