系列文章:

单线程性能测试: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. HDU 1533:Going Home(KM算法求二分图最小权匹配)

    http://acm.hdu.edu.cn/showproblem.php?pid=1533 Going Home Problem Description   On a grid map there ...

  2. 测试调试-利用fiddler修改response返回结果

    测试前端过程中,经常需要验证各种功能状态.不同数据层级等返回后的展示效果.一般会通过以下三种方式进行测试: 1.构造满足条件的测试数据:(耗时费力) 2.修改数据库:(前提需要了解数据库数据存储.沟通 ...

  3. 嵊州D3T3 light

    嵊州D3T3 light 光恰似水 兄弟俩曾经 k 次受到过父母的物质激励. 一开始,兄弟俩的能力值为 1,最后,兄弟俩的能力值是 1 + (2 ^k−1)/ n . 当兄弟俩受到价值为 mi 的物质 ...

  4. c++学习书籍推荐《C++ GUI Qt 4编程(第2版)》下载

    下载地址:点我 百度云及其他网盘下载地址:点我 编辑推荐 <C++ GUI Qt 4编程(第2版)>讲授的大量Qt4编程原理和实践,都可以轻易将其应用于Qt4.4.Qt4.5及后续版本的Q ...

  5. Java 代码界 3% 的王者?看我是如何解错这 5 道题的

    前些日子,阿里妹(妹子出题也这么难)发表了一篇文章<悬赏征集!5 道题征集代码界前 3% 的超级王者>——看到这个标题,我内心非常非常激动,因为终于可以证明自己技术很牛逼了. 但遗憾的是, ...

  6. css的优先级 和 权重问题 以及 !important 优先级

    css的优先级 和 权重问题 以及 !important 优先级 css选择有多少种? 行内样式(style="") id选择器(#) class选择器(类,伪类) 元素选择器(标 ...

  7. 能访问的谷歌 http://209.116.186.231/

    能访问的谷歌 http://209.116.186.231/

  8. CUDA编程学习笔记2

    第二章 cuda代码写在.cu/.cuh里面 cuda 7.0 / 9.0开始,NVCC就支持c++11 / 14里面绝大部分的语言特性了. Dim3 __host__ __device__ dim3 ...

  9. MyBatis从入门到精通(十四):在MyBatis中使用类型处理器

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解在MyBatis中如何 ...

  10. 四、利用SQL Server 2008 R2创建自动备份计划

    (转) 本文主要利用SQL Server 2008 R2自带的"维护计划"创建一个自动备份数据的任务. 首先,启动 Sql Management studio,确保"SQ ...