http客户端-性能比较系列-第一篇-单线程
系列文章:
单线程性能测试:https://www.cnblogs.com/victor2302/p/11077208.html
多线程性能测试:https://www.cnblogs.com/victor2302/p/11080965.html
github代码:https://github.com/victorsheng/benchmark-anything
几种常见的java http客户端
- ApacheHttpShareClient
- JdkHttpClient
- OkHttpClientt
- SpringHttpClient
- UnirestHttpClient
具体版本:
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>${okhttp.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.mashape.unirest/unirest-java -->
<dependency>
<groupId>com.mashape.unirest</groupId>
<artifactId>unirest-java</artifactId>
<version>1.4.9</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.6.RELEASE</version>
</dependency>
几种简单的场景
- 访问get方法接口,低延迟
- 访问post上传接口
- 访问文件下载接口
结果地址
测试1:
单线程-访问一个立即返回的接口
响应时间
结果:
第一名: ApacheHttpShareClient
第二名: UnirestHttpClient
第三名: OkHttpClientt
并列第四名: JdkHttpClient, SpringHttpClient
其中UnirestHttpClient底层就是ApacheHttpShareClient,加了默认的参数,通过Unirest风格的api
测试2:
单线程-访问响应时间为5ms的接口
响应时
各个客户端之间,无显著差异
测试3
单线程-文件下载 300kb,600kb,1m
ApacheHttpShareClient表现良好
SpringHttpClient其次
测试4
单线程-文件上传300kb,600kb
响应时
UnirestHttpClient表现良好
小结
并没有发现一个客户端在各个场景都优于其他http客户端
但综合各个场景,在单线程调用情况下,org.apache.http.impl.client.HttpClients整体较为优秀
代码地址
https://github.com/victorsheng/benchmark-anything
其中:
http-client-benchmark目录包含了性能测试的代码
http-client-benchmark-mock-server目录包含了被客户端访问的接口实现