发现一个框架性能对比网站,我把 rust/go/ Java /csharp/js/py 对比了下
直接上 link: 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 ,中游的样子,够用,并且生态比绝大部分框架都强
当然真实项目的性能肯定没这么简单,这只是单纯测试框架处理请求的能力而已,别太较真
确实不能太较真。。 拿 1.6k 的 django 来说,一个请求,框架本身占用的耗时才不到 1ms ,我在挂梯子访问 v 站的时候,所有请求耗时都至少 100ms 了。。
我列的是 256 个并发连接的 qps ,所以 1.6k 的 Django 实际一个请求要 6ms 差不多,这是没有业务逻辑的,比其他框架确实差很多🤣
uwebsockets 用 c 和 c++写的
js 套壳吗?好像 js 经常这么干
套了一层绑定,js 下面性能比较高的框架是套了一层 uwebsockets ,比较看好 hyper-express ,有性能的同时又有了 express 的部分生态
加上 PHP ,发现上了 swoole php 性能还是比 go 强
他 bench 的源码太简单了,和直接 accept tcp 应该没啥区别
go 最快的是 fasthttp , 可能是因为把路由写死了。。。 github.com/the-benchmarker/web-frameworks/blob/master/go/fasthttp/main.go
打一份而已,需要这样操心吗?软件不光是性能问题,更是性价比问题。
fasthttp 本就没有理由功能
有没有列出资源占用的对比?就是想看看付出的成本有多大
应该把 php 也加进来
workerman 排第七(#^.^#)
用的 Java 版本有点老
Python 的框架需要 wsgi, 这家伙是直接用框架自带的 wsgiref 来测的吧
www.techempower.com/benchmarks/#hw=ph&test=fortune§ion=data-r22
js/java 能排 c/c++/rust 前面,这网站不用看了
其他语言本来就是编译成 wasm 给 JavaScript 打工嘚,怎么就不用看了,不服气吗
测框架性能当然越简单越好
看这种网站和以上一些认知,我就不想说了, 你自己开心就好。
回 18 楼:这么说的话,shell 最牛逼,所有的程序,只要需要在 OS 上跑的,都得通过它调用,都是给它打工。 @.V.@
Java 能升级到 jdk21 并使用 zgc 和虚拟线程的话,性能应该会有点提升我的网关服务也升级后有稍微提升
这个数据有些诡异:吞吐=并发/平均响应时间但从数据上来看平均响应小的框架,QPS 反而不高。
go 的 fasthttp 算不上框架吧 只是一个路由
这玩意儿,看看就好,实际开发,接口一复杂,大家都一样了。比如一个接口 500ms ,框架本身是 10ms 还是 1ms 影响不是很大了。
打榜真没必要,开发体验大过一切。
有一定参考意义,像我这种啥都不懂的 java 农可以顺着找到不少好玩的东西但是实际项目开发,web 框架的性能,不说是最需要考虑的东西,但也可以说是最微不足道的东西了,一来十成甚至九成的性能瓶颈不在 web 层,二来在 web 层被打崩之前一般接入层就已经跑满了
techempower.com
PHP 不配吗
每几个月,就有这样一篇比较
协程究竟解决了什么问题,都在吹协程,像是 go 、kotlin 都有协程,java 本身没有协程, 还有相比于线程,协程的优势是什么,为啥 java 没有协程,性能框架和 go…
不知道触发了哪个关键词,一直不让发,偶然看到有老哥贴了外链。 跟组长聊了聊职业规划 看完了,一定要保持学习 看完了 有点感触 多谢分享 > 还是那句话,保证自己的唯一性。…
就是能方便管理多台机器的 只需要支持 mstsc 的 微软自己有一个 rdcman, 但估计是几十年前开发的, 界面实在太老 MobaXterm Linux 下的 remm…