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

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

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

    直接上 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
    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   ·   实用小工具   ·   2704 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:06 · PVG 15:06 · LAX 00:06 · JFK 03:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.