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
http客户端-性能比较系列-第二篇-多线程的更多相关文章
- http客户端-性能比较系列-第一篇-单线程
系列文章: 单线程性能测试:https://www.cnblogs.com/victor2302/p/11077208.html 多线程性能测试:https://www.cnblogs.com/vic ...
- Android应用性能优化系列视图篇——隐藏在资源图片中的内存杀手
图片加载性能优化永远是Android领域中一个无法绕过的话题,经过数年的发展,涌现了很多成熟的图片加载开源库,比如Fresco.Picasso.UIL等等,使得图片加载不再是一个头疼的问题,并且大幅降 ...
- 前端工程师技能之photoshop巧用系列第二篇——测量篇
× 目录 [1]测量信息 [2]实战 [3]注意事项 前面的话 前端工程师使用photoshop进行的大量工作实际上是测量.本文是photoshop巧用系列第二篇——测量篇 测量信息 在网页制作中需要 ...
- 深入理解javascript函数系列第二篇——函数参数
× 目录 [1]arguments [2]内部属性 [3]函数重载[4]参数传递 前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传 ...
- 深入理解javascript作用域系列第二篇——词法作用域和动态作用域
× 目录 [1]词法 [2]动态 前面的话 大多数时候,我们对作用域产生混乱的主要原因是分不清楚应该按照函数位置的嵌套顺序,还是按照函数的调用顺序进行变量查找.再加上this机制的干扰,使得变量查找极 ...
- 深入理解javascript作用域系列第二篇
前面的话 大多数时候,我们对作用域产生混乱的主要原因是分不清楚应该按照函数位置的嵌套顺序,还是按照函数的调用顺序进行变量查找.再加上this机制的干扰,使得变量查找极易出错.这实际上是由两种作用域工作 ...
- [ 高并发]Java高并发编程系列第二篇--线程同步
高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...
- Android性能优化系列总篇
目前性能优化专题已完成以下部分: 性能优化总纲——性能问题及性能调优方式 性能优化第四篇——移动网络优化 性能优化第三篇——Java(Android)代码优化 性能优化第二篇——布局优化 性能优化第一 ...
- 深入理解javascript对象系列第二篇——属性操作
× 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...
随机推荐
- POJ 2455:Secret Milking Machine(二分+最大流)
http://poj.org/problem?id=2455 题意:给出n个点和m条无向路,每条路都有一个长度.从1点到n点要走t次两两互不重合的路.求出每条1->n的路中相邻两点最大值的最小值 ...
- SPOJ STC02 - Antisymmetry(Manacher算法求回文串数)
http://www.spoj.com/problems/STC02/en/ 题意:给出一个长度为n的字符串,问其中有多少个子串s可以使得s = s按位取反+翻转. 例如样例:11001011. 10 ...
- CSU 1508:地图的四着色(DFS+剪枝)
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1508 题意:地图中四联通的块是一个国家,A和B每个人可以涂两种颜色,且B不能涂超过5次,相邻的国家 ...
- Azkaban Flow 2.0 使用简介
官方建议使用Flow 2.0来创建Azkaban工作流,且Flow 1.0将被弃用 目录 目录 一.简单的Flow 1. 新建 flow20.project 文件 2. 新建 .flow 文件 3. ...
- 免费rar/zip解压缩工具BandZip
今天为大家推荐一款解压缩类软件--BandZip bandzip是我认为的最好用的解压缩软件,速度快没广告 能够秒杀其他的压缩类软件 下载地址 bandzip点我 1 BandZip简介 BandZi ...
- Bzoj 1537: [POI2005]Aut- The Bus 题解 [由暴力到正解]
1537: [POI2005]Aut- The Bus Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 387 Solved: 264[Submit][S ...
- 鸟哥的Linux私房菜笔记第六章(二)
文件内容查询 直接查询文件内容 查阅一个文件的内容可以使用指令cat/tac/nl. # [cat|tac|nl] 文件 区别: 1.cat是直接把文件内容输出到屏幕上,并且从第一行开始输出到末行 2 ...
- 设计模式:策略模式,Java集合定制排序的核心思想
前言 前阵子面试的时候,有个面试官问我了解哪些设计模式吗?我说了策略模式.接着他问有哪些场景应用,我又回答他jdk的集合工具类有个排序方法就用到了策略模式,也就是java.util包下的Collect ...
- SQL Server 设置默认数据库
STEP 1 调用系统函数 查看SQL Server的当前用户名 SELECT SUSER_NAME(); NOTE : 系统函数的调用跟sql语句执行一样 Paste_Image.png 运行结果 ...
- Redis(四)--- Redis的命令参考
1.简述 数据类型也称数据对象,包含字符串对象(string).列表对象(list).哈希对象(hash).集合对象(set).有序集合对象(zset). 2.String数据类型命令 string ...