网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > 其它技术 > Java技巧:使用缓冲IO提高性能  

Java技巧:使用缓冲IO提高性能

2002-12-31  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏


  Java 输入/输出(IO)的性能可以使用标准的缓冲类提升,就像操作系统通过缓冲请求提高它的速度一样。例如,如果一段代码要求从磁盘上读取数据,它会试图读取内存中已有的数据;如果代码希望向磁盘写一些东西,它可能在完成写操作前将输出在内存中存放一段时间以等待更多的数据。
  
  在Java的IO系统中,将一个字符写入内存比写到磁盘上快得多,例如:
  
  // 这段代码会抛出 IOException
  Writer writer = new FileWriter( new File( "file.txt" ) );
  for(int i=0; i<1000; i++) {
  writer.write(""+i);
  writer.write("\n");
  }
  writer.close( );
  
  在这个范例代码中,FileWriter一次输出一个数字,在Apple Powerbook
  上测量消耗的时间,第一次是180毫秒,以后是90毫秒,这个不同可能是JVM的即时(just-in-time)编译导致的。
  
  给这段代码添加缓冲功能就是在FileWriter上创建一个BufferedWriter对象。
  
  //这段代码会抛出IOException
  
  Writer writer = new BufferedWriter(new FileWriter(
  new File( "file.txt" )
  ) );
  for(int i=0; i<1000; i++) { 网管u家bitscn.net
  writer.write(""+i);
  writer.write("\n");
  }
  writer.close( );
  现在BufferedWriter会决定以什么频率向FileWriter发送写调用。可以使用flush( )方法强制发出写调用。增加了BufferedWriter后,代码的运行时间是63毫秒。如果是有很多小量的输出,那么BufferedWriter在缺省条件下的性能提升是非常显著的。
  
  除了BufferedWriter外,BufferedOutputStream也具有相同的品质,对于输入就是BufferedReader和BufferedInputStream。
  
  需要注意的是缓冲类不光是在文件系统上起作用,任何的Reader/Writer都能进行缓冲以提高字符输入/输出的速度,同样任何OutputStream/InputStream都能进行缓冲以提高字节IO的速度。
  
  
TAGs提高   技巧   代码   缓冲   BufferedWriter   输出   writer.write    
 上一篇:修正Java中wait方法超时语意模糊性的一种方案   下一篇:Java技巧:拷贝枚举器以加强效率
相关文章列表
Java技巧:使用缓冲IO提高性能 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.深入Java调试体系: 第1部分,JPDA体系概
2.Apusic上用JavaMail发邮件
3.优秀Java程序员必须了解的GC工作原理
4.Java 6 RowSet 使用完全剖析
5.java 实现压缩与解压缩ZIP
6.Java 6中的性能优化
7.Java标准类库提供的容器总结
8.Java SE 6 新特性: Instrumentation 新功
9.面向Java开发人员的Scala指南: 实现继承
10.超越XML和JSON:YAML,Java开发人员的新
最新推荐文章:
1.J2SE实现windows读取网卡的物理地址
2.使用Jetty和DWR创建伸缩性Comet程序
3.经验分享:我的20天项目经历
4.实现Java跨平台运行的十二个注意事项
5.成功的必要条件:开源思想推动创新
6.100行Java代码构建一个线程池
7.用Stripes做Java Web开发
8.j2me创意--Wap浏览器的源代码
9.使用Hashtable对字符串进行碰撞
10.定制 bugzilla 进行项目管理
网管论坛交流:
·大家来开心一下吧---看了会很开心的东西-
·中国人不可不知道的知识
·@@小鹏◎◎小鹏同志与某位女明星亲密接触
·◎◎小鹏◎◎发现不明生物,居然正在交配
·[图文]^^^版主是什么?????
·泡论坛的女人是好女人
·做个“水性杨花”的女人
·献给mm俱乐部的所有mm
·深圳一集团企业电脑基础应用培训教程
·■■■■十一遊玩照■■■■■