平反<>中对WSAAsync Select模型的测试性能

WinEggDrop 2008-12-02 08:09:18
http://210.51.37.76/compare.jpg
以上连接是6种不同模型有各种压力测试下的性能的总结,WSAAsyncSelect模型的测试结果是属于中下的,以这性能,这种模型是不适合于比较大量的连接的,但事实上真是这样吗?

让我们比较下WSAAsyncSelect,WSAEventSelect,以及Over-lapped(events)三种模型.在书中测试的例子中,WSAAsyncSelect只是使用一个线程去处理所有的网络请求(表中写是使用3个线程,但由于主程序一个线程,界面一个线程,所以只剩下一个线程是处理网络请求的),但WSAEventSelect和Over-lapped(Events)两种模型,基本上是使用线程池(几十到上百线程)去处理所有网络请求.书中也有说WSAAsyncSelect模型因为不能及时地处理FD_ACCEPT事件导致很多连接不能接收到,以及因为太多消息要处理,造成了消息阻塞,平均的流量也是很不理想.但这真是WSAAsyncSelect模型本身问题吗?我在想,如果让WSAAsyncSelect模型一样使用线程池,象WSAEventSelect,以及Over-lapped(events)模型一样,使用几十到百多线程处理所有请求,结果会是怎样?测试结果在我意料之中,如果让WSAAsyncSelect()使用同样多的线程去处理所有网络请求,所有的性能数据都和Over-lapped(events)模型非常接近,哪怕只是使用1/4左右的线程,一样可以以稍高一点的CPU使用率,达到Over-lapped(events)模型的性能,对于这个结果,是意料之外,因为如果使用线程池的话,WSAAsyncSelect模型的性能是排在WSAEventSelect,以及Over-lapped(events)之上,但当只是使用单个线程处理很大量的连接量(5000以上),WSAAsyncSelect()模型的性能是很差的.除了IOCP这种异类的模型外,没有哪个模型是以可以使用很少的线程达到很高的性能.
...全文
113 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
littlepboy 2008-12-10
  • 打赏
  • 举报
回复
呵呵,那就是说这本书的结论可能是建立在单线程处理方法基础之上的,
如果使用线程池的话WSAAsyncSelect模型的性能还是不一样的。
这个研究成果貌似比较有意义啊,学习了。

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧