最近想比较一下Grpc性能与webapi 的性能问题,所以做了一下简单测试(dotnet core)。
测试方式仅仅是客户端发送循环请求,服务端返回一个简单字符串(hello world)。
在测试之前,心中的预期结果是Grpc方式的响应时间小于webapi请求,就是想比较一下差异,但结果试下来却发现,Grpc反而要慢。
大致测试数据如下:
webapi 1k 次
总过程耗时: 481.97 ms,最大耗时: 4.85 ms,最小耗时: 0.37 ms,平均耗时: 0.48 ms
grpc 1k 次
总过程耗时: 725.97 ms,最大耗时: 8.23 ms,最小耗时: 0.54 ms,平均耗时: 0.72 ms
webapi 1w 次
总过程耗时: 5078.82 ms,最大耗时: 4.32 ms,最小耗时: 0.33 ms,平均耗时: 0.51 ms
grpc 1w 次
总过程耗时: 7480.11 ms,最大耗时: 12.62 ms,最小耗时: 0.52 ms,平均耗时: 0.75 ms
Grpc服务约占用230M内存,webapi服务约占用85M内存。
有没有哪位大佬知道这是什么情况,Grpc 不是说是基于http2,数据会被压缩,性能更高吗?怎么测试下来反而不如普通的webapi,是姿势不正确吗。。