系列文章:

单线程性能测试: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客户端-性能比较系列-第二篇-多线程的更多相关文章

  1. http客户端-性能比较系列-第一篇-单线程

    系列文章: 单线程性能测试:https://www.cnblogs.com/victor2302/p/11077208.html 多线程性能测试:https://www.cnblogs.com/vic ...

  2. Android应用性能优化系列视图篇——隐藏在资源图片中的内存杀手

    图片加载性能优化永远是Android领域中一个无法绕过的话题,经过数年的发展,涌现了很多成熟的图片加载开源库,比如Fresco.Picasso.UIL等等,使得图片加载不再是一个头疼的问题,并且大幅降 ...

  3. 前端工程师技能之photoshop巧用系列第二篇——测量篇

    × 目录 [1]测量信息 [2]实战 [3]注意事项 前面的话 前端工程师使用photoshop进行的大量工作实际上是测量.本文是photoshop巧用系列第二篇——测量篇 测量信息 在网页制作中需要 ...

  4. 深入理解javascript函数系列第二篇——函数参数

    × 目录 [1]arguments [2]内部属性 [3]函数重载[4]参数传递 前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传 ...

  5. 深入理解javascript作用域系列第二篇——词法作用域和动态作用域

    × 目录 [1]词法 [2]动态 前面的话 大多数时候,我们对作用域产生混乱的主要原因是分不清楚应该按照函数位置的嵌套顺序,还是按照函数的调用顺序进行变量查找.再加上this机制的干扰,使得变量查找极 ...

  6. 深入理解javascript作用域系列第二篇

    前面的话 大多数时候,我们对作用域产生混乱的主要原因是分不清楚应该按照函数位置的嵌套顺序,还是按照函数的调用顺序进行变量查找.再加上this机制的干扰,使得变量查找极易出错.这实际上是由两种作用域工作 ...

  7. [ 高并发]Java高并发编程系列第二篇--线程同步

    高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...

  8. Android性能优化系列总篇

    目前性能优化专题已完成以下部分: 性能优化总纲——性能问题及性能调优方式 性能优化第四篇——移动网络优化 性能优化第三篇——Java(Android)代码优化 性能优化第二篇——布局优化 性能优化第一 ...

  9. 深入理解javascript对象系列第二篇——属性操作

    × 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...

随机推荐

  1. 个人亲测,在win10系统下安装多实例mysql8.0详细教程

    由于公司的新项目需要导入sql脚本,需要更高版本的mysql数据库,原来的数据库我也不想删除和升级,因此安装了第二个mysql8的实例,废话不多说,步骤如下: 1.下载mysqlGPL版本,我下载的版 ...

  2. springboot不同环境打包

    1. 场景描述 springboot+maven打包,项目中经常用到不同的环境下打包不同的配置文件,比如连接的数据库.配置文件.日志文件级别等都不一样. 2. 解决方案 在pom.xml文件中定义 2 ...

  3. 《ElasticSearch6.x实战教程》正式推出(附图书抽奖)

    经过接近1个月的时间,ElasticSearch6.x实战教程终于成册.这本实战教程小册有很多不足(甚至可能有错误),也是第一次完整推出一个系列的教程. 1年前,我开始真正接触ES,在此之前仅停留在知 ...

  4. Bzoj 1537: [POI2005]Aut- The Bus 题解 [由暴力到正解]

    1537: [POI2005]Aut- The Bus Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 387  Solved: 264[Submit][S ...

  5. ambari-cassandra-service

    社区:https://github.com/Symantec/ambari-cassandra-service 在HDP集群上安装和管理Cassandra服务,Apache Cassandra是一个开 ...

  6. [PTA] 数据结构与算法题目集 6-2 顺序表操作集

    //创建并返回一个空的线性表: List MakeEmpty() { List L; L = (List)malloc(sizeof(struct LNode)); L->Last = -1; ...

  7. 前端手势控制图片插件书写四(图片上传及Ios图片方向问题)

    1.在图片上传中,使用的input的type为File的属性.使用filereader的Api let that = this; var file = document.getElementById( ...

  8. 【转】8年!我在OpenStack路上走过的坑。。。

    8年!我在OpenStack路上走过的坑... 摘要: 2010年10月,OpenStack发布了第一个版本:上个月,发布了它的第18个版本Rocky.几年前气氛火爆,如今却冷冷清清.Rocky版本宣 ...

  9. linux初学者-firewall篇

     linux初学者-firewall篇 firewalld是防火墙的另一种程序,与iptables相同,但是使用起来要比iptables简单的点,不需要了解3张表和5条链也可以使用. 1.firewa ...

  10. 牛客第十场Rikka with Prefix Sum

    由于其中的2操作非常多,我们就需要将其快速的更改,就会用到组合数的东西 其实自己手写一下就可以发现对于一个点增加的值在经过不断地前缀和累加过程中对于一点的贡献满足杨辉三角 所以我们就需要记录一下其中的 ...