IOCP(Proactor, aio_*) 不等于高性能
IOCP(Proactor, aio_*) 不等于高性能大家对"高性能"看上去非常有兴趣,下面我把我的看法和理解抛出来,欢迎指正.
C++ NPv 2 第一章详细讲了网络化程序的设计维度 ,原文是通讯设计维度(Communication Design Dimensions),
服务器的"性能"应该是一个综合指标,不应该是设计维度中探讨的某一方面.也就是说:
"性能"不等于支持客户端的最大连接数;
不等于单位时间的最大I/O吞吐量;
不等于请求响应的最小延迟
连接数,吞吐量,最小时延这些指标,在不同网络环境下,不同的请求类型下所表现的能力也不同.
比如,以最小延迟为例,当用户数少,网络环境好,数据包短小,面向非连接的UDP的"性能"是最好的,IOCP可能得分最低。
下面附上一个http_service (JAWS) ,在ACE源代码包中附有源代码原作者的一篇论文,其中第4节详细比较了在一特定测试环境下
几种不同的设计方式性能的比较,其中,用了IOCP的Proactor的异步线程池模式表现尚好,但在连接数少,小数据包的情况下,它
却是最差的。 那什么什么才叫“高性能”呢? 服务器是以多连接,大吞吐量而设计的。
高性能就是每秒5GB.......
页:
[1]