登录/注册
qgyh
2158
占位
1
占位
0
浏览量
占位
粉丝
占位
关注
go gin框架和springboot框架WEB接口性能对比
qgyh
2021-05-08 14:16:44 2021-05-08
100
0

1 简要概述

最近看起go lang,真的被go的goroutine(协程)惊艳到了,一句 go function(){#todo},即可完成一个并发的工作。

看到gin这个web框架时,突然就特别想拿它和springboot来做个性能对比,马上撸一遍。

请求:/ping

返回:{"message":"pong"}

先透露下对比报告:

  qps  CPU  内存  包大小
gin 14900  150% 0.4% 9M 
springboot 11536 143% 12% 24M 
 

 2 环境准备

3 代码工程及打包

3.1 gin

关键代码:

1 func main() {
2 gin.SetMode(gin.ReleaseMode)
3 gin.DefaultWriter = ioutil.Discard
4 r := gin.Default()
5 r.GET("/ping", func(c *gin.Context) {
6 c.JSON(200, gin.H{
7 "message": "pong",
8 })
9 })
10 r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
11 }

打包:

1 set GOOS=linux #windows环境需要设置GOOS,才能build成linux环境的可运行二进制文件
2 go build http_gin.go

 

上传linux环境:

1 修改成可执行文件 chmod +x http_gin
2 运行 ./http_gin &

3.2 springboot

关键代码:

1 @RestController
2 public class DemoController {
3 Result result = new Result("pong");
4
5 @RequestMapping("/ping")
6 public Result hello(){
7 return result;
8 }
9 }
10
11
12 class Result{
13 String Message;
14 public String getMessage() {
15 return Message;
16 }
17 public void setMessage(String message) {
18 Message = message;
19 }
20 public Result(String message) {
21 Message = message;
22 }
23 }

编译上传:

1 maven编译 :mvn install

运行:

1 java -jar demo-0.0.1-SNAPSHOT.jar &

 4 benchmark

模拟20个用户,发出20万个请求

1 ab -c 20 -n 200000 http://172.16.60.211:8080/ping

** 4.1 gin benchmark**

1 ab -c 20 -n 200000 http:

//

172.16.60.211:8080/ping

benchmark结果:

```

1 Concurrency Level: 20
2 Time taken for tests: 13.423 seconds
3 Complete requests: 200000
4 Failed requests: 0
5 Write errors: 0
6 Total transferred: 28200000 bytes
7 HTML transferred: 3600000 bytes
8 Requests per secon

暂无评论