性能测试工具 BIO | 伪异步 I/O | NIO | AIO 性能

rocl · 2018年03月29日 · 1498 次阅读

本文来源于:http://blog.anxpp.com/index.php/archives/895/

简介:从编程语言层面

BIO|NIO|AIO 以 Java 的角度,理解如下:
BIO,同步阻塞式 IO,简单理解:一个线程处理一个链接,发起和处理 IO 请求都是同步的
伪异步 I/O 编程,服务器端使用线程池代替 BIO 的服务器端
NIO,同步非阻塞 IO,简单理解:一个线程处理多个连接,发起 IO 请求是非阻塞的但处理 IO 请求是同步的
AIO,异步非阻塞 IO,简单理解:一个有效请求一个线程,发起和处理都是异步的

测试代码见下:

名称 代码 git 地址
BIO https://gitee.com/roclli/IO-Modle-11-BIO.git
伪异步 I/O 编程 https://gitee.com/roclli/IO-Modle-12-fake-BIO.git
NIO https://gitee.com/roclli/IO-Model-2-NIO.git
AIO https://gitee.com/roclli/IO-Model-3-AIO.git

版本粗略测试了每种模式的性能:

测试条件 CPU 情况 Memory 情况
伪异步的服务器 +BIO 的客户端 (一个服务器,线程池有2个线程,9个客户端) 基本上 8core 都在 80% 左右 13.0G/15.6G
NIO 的服务器 +BIO 的客户端 (一个服务器,9个客户端) 基本上 8core 都在 68% 左右 13.8G/15.6G
BIO 的服务器 +BIO 的客户端 (一个服务器,9个客户端) 基本上 8core 都在 60% 左右 14.4G/15.6G
AIO 的服务器 +BIO 的客户端 (一个服务器,9个客户端) 基本上 8core 都在 46% 左右 12.4G/15.6G

说明:

  • 客户端服务器都运行在一台机器上
  • 服务器上还有其他服务运行,因此统计的数据均为所有应用的数据
  • 数据很粗糙,不精确,且为人工统计,有一定的误差

结论:

  • 按照 CPU 由高到底: 伪异步 > NIO > BIO > AIO
  • 按照内存消耗由高到底: BIO > NIO > 伪异步 > AIO
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册