NIO VS IO

NIO 主要是用在服务端 处理高并发的情况下,用少量的线程处理很多个并发请求,它的优势在服务端、高并发,并且也是基于IO的,相当于封装了一层IO

IO主要用在客户端 处理单一链路,因为同一个socket在处理read和write是不阻塞的,但是同时read或者write都是阻塞的,这导致只能同时一个线程处理read和write

如果基于NIO开发客户端,那么不能体现NIO的优势,一方面封装了IO,反而会下降传输速度,另一方面事件的分发是基于轮训的,可能会有延迟。但是在如果客户端并发达到1千次每秒的情况下,nio可以一次性接受更多的返回,这样就比IO的要快一点,但是不会快非常多,大概也就10%的性能提升。

下面是自己做的一个测试:

 

Io

 

 

 

线程

每线程请求次数

耗时

速度

150

2000

99s

3030c/s

100

2000

67s

3333c/s

50

2000

31s

3225c/s

20

2000

21s

1904c/s

10

2000

12s

1666c/s

5

2000

8s

1250c/s

1

2000

5.7s

351c/s

 

 

Nio

 

 

 

线程

每线程请求次数

耗时

速度

150

2000

93s

3225c/s

100

2000

58s

3448c/s

50

2000

30s

3333c/s

20

2000

22s

1818c/s

10

2000

12s

1666c/s

5

2000

9s

1111c/s

1

2000

6.3s

317c/s

 

posted @ 2010-09-06 10:46  玩玩乐乐  阅读(467)  评论(0编辑  收藏  举报