我在 Gin 、Actix 和 Axum 上使用 wrk 做了一些测试。Actix 和 Axum 使用 MiMalloc 作为分配器,发布配置文件包括以下设置:Lto=true 、opt-level=3 和 codegen-units=1 。
平均而言,Go 的延迟小于 1ms ,令人难以置信,而 Actix 的延迟要高得多,但吞吐量/rps 仍优于 Gin 。
我很好奇,为什么 Gin 的延迟如此之小,而 Qps 却远低于另外两个。
结果如下:
Gin (go):
> wrk -t8 -c100 -d30s http://localhost:3000/
Running 30s test @ http://localhost:3000/
8 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 823.52us 1.16ms 25.86ms 88.29%
Req/Sec 22.94k 12.27k 118.70k 81.71%
5488891 requests in 30.07s, 680.50MB read
Requests/sec: 182521.70
Transfer/sec: 22.63MB
axum (rust):
> wrk -t8 -c100 -d30s http://localhost:3000/
Running 30s test @ http://localhost:3000/
8 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 3.87ms 13.64ms 225.34ms 93.67%
Req/Sec 40.34k 23.31k 183.63k 73.83%
9516362 requests in 30.09s, 1.15GB read
Requests/sec: 316292.39
Transfer/sec: 39.21MB
actix (rust):
> wrk -t8 -c100 -d30s http://localhost:3000/
Running 30s test @ http://localhost:3000/
8 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 34.43ms 66.10ms 541.12ms 86.22%
Req/Sec 42.77k 37.73k 214.31k 77.25%
9169105 requests in 30.09s, 769.50MB read
Requests/sec: 304762.55
Transfer/sec: 25.58MB
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.