本次简单对比 Spring Boot, Vert.x, Gin 的性能
均运行在 2C2G 的阿里轻量服务器上,接口都是最简单的返回一个文本 Hello World
JDK 版本:JDK17
Go 版本:1.19.1
Spring Boot 核心代码
Vert.x 核心代码
Gin 核心代码
全部打包后先对比一下包大小
Spring Boot 包 17M
Vert.x 包 6M
Gin 包 9.9M
包体积 Vert.x 胜出
再来看看初启动内存占用
Spring Boot 初启动占用内存 145M
Vert.x 初启动占用内存 62.8M
Gin 初启动占用内存 8.8M
Gin 完全大胜利
接下来开始用 Jmeter 进行压力测试
配置如下
模拟 500 个线程,每个线程进行 100 次请求
测试结果如下
模拟 50 个线程,每个线程进行 1000 次请求
测试结果如下
可以看出综合性能排名如下 Vert.x > Gin > Spring Boot
再看看跑了这么多请求之后的内存占用情况
Spring Boot 内存占用 220M
Vert.x 内存占用 101M
Gin 内存占用 12.6M
排名 Gin >> Vert.x > Spring Boot
简单总结
综合来看 Gin 的性价比最高,最少的内存跑出了非常优异的性能
不过愿意付出一些内存的代价,选择 Vert.x 能获得更好的性能
至于 Spring Boot,emm 生态好的特点在这种简单测试中没有任何用处,而且确实也够臃肿的
不过以上都是基于简单的 Hello World 级别接口性能对比,实际使用中还有数据库连接等
在处理海量数据的情况下 JVM 额外占用的内存就显得不值一提了,而 JVM 优异的 GC 性能更值得考虑
综合测试我个人能力有限,很难测到位,这里直接给出专业机构作出的测试结果
以下截图出自 Round 21 综合排名(Composite scores)
Vert.x 排名 11
Gin 排名 63
Spring 排名 67