Windows环境下IOCP和SELECT模型性能比较

在大量客户端连接的情况下,IOCP模型应该是具有先天优势的,首先是每次调用时不需要传入socket列表,其次是他在通知时就已经完成了IO操作,节省了系统调用。

道理是这么个道理,然而在实际应用过程当中,在少量连接的情况下,例如单连接,IOCP的吞吐性能可能远不及SELECT模型。

具体的项目是一个VPN软件,测试环境是 i7 9700 16G内存 56G InfiniBand直连网络。在使用SELECT模型时单线程测速能达到4~7Gbps以上,而IOCP模型仅仅只有1.2Gbps左右。

搜索了一些资料,国外友人在16年前就发现少量连接时IOCP性能非常差

https://alt.winsock.programming.narkive.com/cs0WvuXh/does-iocp-provide-real-performance-gain

另外一个paper显示在大量连接的情况下,IOCP与EPOLL不分伯仲(没有测试select)

https://www.slideshare.net/sm9kr/iocp-vs-epoll-perfor

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值