java对比IO和NIO的文件读写性能测试
1. NIO采用更接近操作系统执行IO的方式:通道和缓存器;顾名思义,数据源的数据由缓存器通过通道进行传输。 2. 在JDK5之后,原始IO系统底层用NIO进行了优化,这可以通过sun公布的源码中找到,但是,NIO系统性还是比IO强。 3. 在稍微研究了IO源码以及部分sun源码,我觉得IO系统的性能瓶颈主要是由于原始的IO架构因素导致。原始的IO系统使用适配器模式,在JDK开发之初貌似是一个很不错的想法,但随着适配器嵌套的越来越多,IO的使用不但让人很烦,而且会影响性能,因为动态实现肯定是要降低性能的。 4. 为了能够尽量准确的验证我的想法,在IO部分的代码也是显示的用缓冲器进行读写。 5. 本地测试:50M文件:IO耗时1031ms,NIO耗时640ms;500M文件:IO耗时18900ms,NIO耗时13500ms。它们的时间差并不会因为文件大小的改变而产生剧烈变化,这说明不管是NIO还是IO在底层处理数据流应该是相似的,导致IO性能约束的是它原始的适配器模型的架构。 主干部分代码: 1.IO系统 2.NIO系统