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

猜你喜欢

转载自blog.csdn.net/MengXP/article/details/109489577
今日推荐