Java NIO 为什么比IO快
- NIO 参考
- 原因描述
NIO 参考:
1. http://blog.csdn.net/shimiso/article/details/24990499
2. http://www.iteye.com/topic/834447
原因:
1. IO 是基于流来读取的,而NIO则是基于块读取,面向流 的 I/O 系统一次一个字节地处理数据。一个输入流产生一个字节的数据,一个输出流消费一个字节的数据。为流式数据创建过滤器非常容易。链接几个过滤器,以便每个过滤器只负责单个复杂处理机制的一部分,这样也是相对简单的。不利的一面是,面向流的 I/O 通常相当慢。
一个 面向块 的 I/O 系统以块的形式处理数据。每一个操作都在一步中产生或者消费一个数据块。按块处理数据比按(流式的)字节处理数据要快得多。但是面向块的 I/O 缺少一些面向流的 I/O 所具有的优雅性和简单性。
一个 面向块 的 I/O 系统以块的形式处理数据。每一个操作都在一步中产生或者消费一个数据块。按块处理数据比按(流式的)字节处理数据要快得多。但是面向块的 I/O 缺少一些面向流的 I/O 所具有的优雅性和简单性。
2. 非阻塞IO 和 异步IO的支持, 减少线程占有的栈空间,以及上下文切换
3. IO 多路复用的支持
4. Buffer 支持,所有读写操作都是基于 缓冲 来实现
5. NIO 支持 Direct Memory, 可以减少一次数据拷贝
6. Netty 零拷贝的支持