Cing
发布于 2022-09-30 / 608 阅读
0

Spring Boot & Vert.x & Gin 简单性能对比

本次简单对比 Spring Boot, Vert.x, Gin 的性能

均运行在 2C2G 的阿里轻量服务器上,接口都是最简单的返回一个文本 Hello World

JDK 版本:JDK17
Go 版本:1.19.1

Spring Boot 核心代码

image

Vert.x 核心代码

image-1664541366189

Gin 核心代码

image-1664541397778

全部打包后先对比一下包大小

image-1664542042880

Spring Boot 包 17M
Vert.x 包 6M
Gin 包 9.9M

包体积 Vert.x 胜出

再来看看初启动内存占用

Spring Boot 初启动占用内存 145M

image-1664541963629

Vert.x 初启动占用内存 62.8M

image-1664541949669

Gin 初启动占用内存 8.8M

image-1664542158693

Gin 完全大胜利

接下来开始用 Jmeter 进行压力测试

配置如下

模拟 500 个线程,每个线程进行 100 次请求

image-1664542531207

测试结果如下

image-1664542546810

模拟 50 个线程,每个线程进行 1000 次请求

image-1664542872271

测试结果如下

image-1664542886684

可以看出综合性能排名如下 Vert.x > Gin > Spring Boot

再看看跑了这么多请求之后的内存占用情况

Spring Boot 内存占用 220M

image-1664542663662

Vert.x 内存占用 101M

image-1664542685254

Gin 内存占用 12.6M

image-1664542705278

排名 Gin >> Vert.x > Spring Boot

简单总结
综合来看 Gin 的性价比最高,最少的内存跑出了非常优异的性能
不过愿意付出一些内存的代价,选择 Vert.x 能获得更好的性能
至于 Spring Boot,emm 生态好的特点在这种简单测试中没有任何用处,而且确实也够臃肿的

不过以上都是基于简单的 Hello World 级别接口性能对比,实际使用中还有数据库连接等
在处理海量数据的情况下 JVM 额外占用的内存就显得不值一提了,而 JVM 优异的 GC 性能更值得考虑

综合测试我个人能力有限,很难测到位,这里直接给出专业机构作出的测试结果

TechEmpower 的性能测试

以下截图出自 Round 21 综合排名(Composite scores)

Vert.x 排名 11

image-1664543473519

Gin 排名 63

image-1664543504611

Spring 排名 67

image-1664543536407