http客户端-性能比较系列-第二篇-多线程
系列文章:
单线程性能测试:https://www.cnblogs.com/victor2302/p/11077208.html
多线程性能测试:https://www.cnblogs.com/victor2302/p/11080965.html
github代码:https://github.com/victorsheng/benchmark-anything
背景
本文从上一篇中的单线程性能测试,改为了4个线程,然后比较这几个http客户端的性能表现
结果
4线程
http://jmh.morethan.io/?source=https://gist.githubusercontent.com/victorsheng/434f55b77ddb332eaa99b9d52b9f781e/raw/b0f666b8d557338c57192aaa60f277d8c0a25621/1561372480772-result.csv
16线程
http://jmh.morethan.io/?source=https://gist.githubusercontent.com/victorsheng/15ad35710787d4940107ca5d476a365b/raw/cfde3d1c34a231c38b258339cc95986ae322ee0b/1561430754195-result.csv
get方法接口立刻返回
okhttpclient和Unirest性能最好,都在0.2ms以下
get方法等待5ms接口
ApacheHttpShareClient性能最差,猜测是由于默认配置原因
文件上传接口
在210kb和420kb下
ApacheHttpShareClient性能最差,JdkHttpClient和Unirest性能最好
文件下载接口
1M情境下:
ApacheHttpShareClient和SpringHttpClient性能最好
420kb情景下
ApacheHttpShareClient,OkhttpClient和SpringHttpClient性能最好
210kb情境下:
OkhttpClient性能最好
验证
在设置org.apache.http.impl.client.CloseableHttpClient多连接后,性能与其他组件无明显差别
代码:
private CloseableHttpClient httpclient = HttpClientBuilder.create().setMaxConnTotal(16)
.setMaxConnPerRoute(16).build();
结果:
Benchmark (className) (diffFeature) Mode Cnt Score Error Units
ClientBenchMarkGET.get_return_now cn.victor123.benchmark.client.ApacheHttpShareClient NULL avgt 3 0.333 ± 0.051 ms/op
ClientBenchMarkGET.get_return_now cn.victor123.benchmark.client.JdkHttpClient NULL avgt 3 0.520 ± 0.475 ms/op
ClientBenchMarkGET.get_return_now cn.victor123.benchmark.client.OkHttpClientt NULL avgt 3 0.473 ± 0.133 ms/op
ClientBenchMarkGET.get_return_now cn.victor123.benchmark.client.SpringHttpClient NULL avgt 3 0.599 ± 0.781 ms/op
ClientBenchMarkGET.get_return_now cn.victor123.benchmark.client.UnirestHttpClient NULL avgt 3 0.446 ± 0.201 ms/op
ClientBenchMarkGET.get_return_sleep5ms cn.victor123.benchmark.client.ApacheHttpShareClient NULL avgt 3 6.379 ± 4.317 ms/op
ClientBenchMarkGET.get_return_sleep5ms cn.victor123.benchmark.client.JdkHttpClient NULL avgt 3 6.794 ± 0.885 ms/op
ClientBenchMarkGET.get_return_sleep5ms cn.victor123.benchmark.client.OkHttpClientt NULL avgt 3 6.663 ± 1.792 ms/op
ClientBenchMarkGET.get_return_sleep5ms cn.victor123.benchmark.client.SpringHttpClient NULL avgt 3 6.572 ± 0.964 ms/op
ClientBenchMarkGET.get_return_sleep5ms cn.victor123.benchmark.client.UnirestHttpClient NULL avgt 3 6.745 ± 1.163 ms/op
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!