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系统

由最代码官方编辑于2015-10-15 9:40:51

java io 和nio_java对比IO和NIO的文件读写性能测试相关推荐

  1. java bytebuffer 读写_java nio bytebuffer文件读写问题

    为什么下面的代码从文件中读不出3和2来?importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOExc ...

  2. java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之OS_Part_2整起~IO们那些事【包括五种IO模型:(BIO、NIO、IO多路复用、信号驱动、AIO);零拷贝、事件处理及并发等模型】

    PART0.前情提要: 通常用户进程的一个完整的IO分为两个阶段(IO有内存IO.网络IO和磁盘IO三种,通常我们说的IO指的是后两者!):[操作系统和驱动程序运行在内核空间,应用程序运行在用户空间, ...

  3. java中的三种IO(BIO、NIO、AIO)

    IO 阻塞和非阻塞主要指的是访问 IO 的线程是否会阻塞(或者说是等待) 线程访问资源,该资源是否准备就绪的一种处理方式 BIO(传统的IO) BIO是同步阻塞式的IO,以流的方式处理数据(效率低) ...

  4. java io流区别_Java中IO流的分类和BIO,NIO,AIO的区别

    到底什么是IO 我们常说的IO,指的是文件的输入和输出,但是在操作系统层面是如何定义IO的呢?到底什么样的过程可以叫做是一次IO呢? 拿一次磁盘文件读取为例,我们要读取的文件是存储在磁盘上的,我们的目 ...

  5. Java中IO流的分类和BIO,NIO,AIO的区别

    到底什么是IO 我们常说的IO,指的是文件的输入和输出,但是在操作系统层面是如何定义IO的呢?到底什么样的过程可以叫做是一次IO呢? 拿一次磁盘文件读取为例,我们要读取的文件是存储在磁盘上的,我们的目 ...

  6. java实践11之网络IO BIO和NIO(上)

    文章目录 java实践11之网络IO BIO和NIO(上) 1 BIO: BIO的使用demo 优化版使用线程池实现异步处理 为何已经异步处理了还说BIO是阻塞的? BIO带来的问题 2 NIO ja ...

  7. IO流全面解析(含NIO部分说明)

    IO流 File类的使用 概述 说明 案例 常用方法 File 类的获取功能 File类的重命名功能 File类的判断功能 File类的创建功能(创建硬盘中对应的文件或文件目录) File类的删除功能 ...

  8. Java AIO初探(异步网络IO)

    Java AIO初探(异步网络IO) 原文: http://www.blogjava.net/killme2008/archive/2009/09/20/295743.html 按照<Unix网 ...

  9. OSI网络模型,IO模型,BIO模型,NIO模型,AIO模型,TCP/IP协议

    文章目录 一.OSI网络模型 1.1.网络的7层架构 1.1.1.七层架构的网络图 1.1.2 七层架构的功能和作用 1.物理层 2.数据链路层 3.网络层 4.传输层 5.会话层 6.表示层 7.应 ...

  10. 明翰Java入门教学系列之IO篇

    复习 1.线程的同步与通信有几种方式? 2.创建线程有几种方式? 3.什么是方法重写与方法重载? 4.线程与进程的区别? 5.如何最高效的遍历Map? 6.线程的状态与生命周期? 7.HashTabl ...

最新文章

  1. 看懂SQL Server的查询计划(绝对好文!)
  2. hdu 5534(dp)
  3. 太 6 了!区块链包包、疫情防控大脑……程序员这样玩转区块链!
  4. Windows驱动中的Crash回调
  5. 设备驱动程序INF文件——INF文件的节
  6. Windows Phone开发(25):启动器与选择器之WebBrowserTask
  7. 日本比中国快一个小时,泰国比中国慢一个小时
  8. [转]C#中多路IP摄像机的视频监控系统
  9. 企业级php第三方支付平台,ThinkPHP新版企业级php第三方api第四方支付平台程序源码商业版 带接口文件等 某宝售价3000元...
  10. canvas技术整理
  11. matlab 创建批量文件夹_学会这12个批量操作,从此告别加班!
  12. 前用户sudo免密码
  13. html认识数字游戏大全,认识HTML列表元素
  14. SQL语句执行顺序【全】
  15. 百度浏览器启动公司级内测 截图首度曝光
  16. xargs -i参数详解
  17. 图论科学家教你如何安排婚礼座次
  18. PPT幻灯片放映不显示备注,只让备注显示在自己屏幕上
  19. FreeNAS 0.72 安装 mldonkey 3.0.6
  20. IPv6的黑洞路由何去何从

热门文章

  1. 马尔可夫链 ▏小白都能看懂的马尔可夫链详解
  2. win7计算机序列号怎么查,怎么查看win7序列号
  3. WSO2 ESB 5.0.0 的一些控制台显示配置
  4. 三菱je -c中映射表的作用_如何将三菱PLC程序转换成欧姆龙PLC程序?
  5. 程序员王不留到底干了啥?!
  6. 西南大学计算机考研学硕,西南大学心理学学硕343分考研经验
  7. 解决accuracy_score报错Classification metrics can‘t handle a mix of continuous and multiclass targets
  8. iOS经典讲解之Socket使用教程
  9. OS + Win Office / word / excel / ppt / powerpoint / keyboard_shortcut
  10. 后端接口生成微信小程序二维码Api