NIO VS IO
2010-09-06 10:46
106 查看
NIO 主要是用在服务端 处理高并发的情况下,用少量的线程处理很多个并发请求,它的优势在服务端、高并发,并且也是基于IO的,相当于封装了一层IO
IO主要用在客户端 处理单一链路,因为同一个socket在处理read和write是不阻塞的,但是同时read或者write都是阻塞的,这导致只能同时一个线程处理read和write
如果基于NIO开发客户端,那么不能体现NIO的优势,一方面封装了IO,反而会下降传输速度,另一方面事件的分发是基于轮训的,可能会有延迟。但是在如果客户端并发达到1千次每秒的情况下,nio可以一次性接受更多的返回,这样就比IO的要快一点,但是不会快非常多,大概也就10%的性能提升。
下面是自己做的一个测试:
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 |
相关文章推荐
- Java Nio 十四、Java NIO vs. IO
- [NIO日记](2)NIO vs IO
- Java NIO vs. IO
- Java IO vs NIO
- JAVA SOCKET IO VS NIO
- Java NIO vs. IO
- Java NIO(13-NIO vs. IO)
- 第七篇:Java NIO Socket VS 标准IO Socket
- Java IO vs NIO vs AIO vs 协议Servlet 3.0 以及NIO的框架f
- java NIO vs IO
- Java NIO vs. IO
- 14. Java NIO vs IO
- java NIO vs IO
- Java NIO vs. IO
- Java NIO vs. IO
- Java NIO VS IO
- NIO vs IO
- 【Java TCP/IP Socket】Java NIO Socket VS 标准IO Socket
- Java NIO vs. IO
- Java NIO Socket VS 标准IO Socket