全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/art/201206/343690.htm在处理大文件时,如果利用普通的FileInputStream 或者FileOutputStream 抑或RandomAccessFile 来进行频繁的读写操作,都将导致进程因频繁读写外存而降低速度.如下为一个对比实验。1. packagetest; 2. 3. importjava.io.BufferedInputStream; 4. importjava.io.FileInputStream; 5. importjava.io.FileNotFoundException; 6. importjava.io.IOException; 7. importjava.io.RandomAccessFile; 8. importjava.nio.MappedByteBuffer; 9. importjava.nio.channels.FileChannel; 10. 11. publicclassTest 12. 13. publicstaticvoidmain(Stringargs) 14. try 15. FileInputStreamfis=newFileInputStream(/home/tobacco/test/res.txt); 16. intsum=0; 17. intn; 18. longt1=System.currentTimeMillis(); 19. try 20. while(n=fis.read()=0) 21. sum+=n; 22. 23. catch(IOExceptione) 24. /TODOAuto-generatedcatchblock 25. e.printStackTrace(); 26. 27. longt=System.currentTimeMillis()-t1; 28. System.out.println(sum:+sum+time:+t); 29. catch(FileNotFoundExceptione) 30. /TODOAuto-generatedcatchblock 31. e.printStackTrace(); 32. 33. try 34. FileInputStreamfis=newFileInputStream(/home/tobacco/test/res.txt); 35. BufferedInputStreambis=newBufferedInputStream(fis); 36. intsum=0; 37. intn; 38. longt1=System.currentTimeMillis(); 39. try 40. while(n=bis.read()=0) 41. sum+=n; 42. 43. catch(IOExceptione) 44. /TODOAuto-generatedcatchblock 45. e.printStackTrace(); 46. 47. longt=System.currentTimeMillis()-t1; 48. System.out.println(sum:+sum+time:+t); 49. catch(FileNotFoundExceptione) 50. /TODOAuto-generatedcatchblock 51. e.printStackTrace(); 52. 53. MappedByteBufferbuffer=null; 54. try 55. buffer=newRandomAccessFile(/home/tobacco/test/res.txt,rw).getChannel().map(FileChannel.MapMode.READ_WRITE,0,1253244); 56. intsum=0; 57. intn; 58. longt1=System.currentTimeMillis(); 59. for(inti=0;i=0) 20. /sum+=n; 21. 22. catch(IOExceptione) 23. /TODOAuto-generatedcatchblock 24. e.printStackTrace(); 25. 26. longt=System.currentTimeMillis()-t1; 27. System.out.println(sum:+sum+time:+t); 28. catch(FileNotFoundExceptione) 29. /TODOAuto-generatedcatchblock 30. e.printStackTrace(); 31. 32. 33. try 34. FileInputStreamfis=newFileInputStream(/home/tobacco/test/res.txt); 35. BufferedInputStreambis=newBufferedInputStream(fis); 36. intsum=0; 37. intn; 38. longt1=System.currentTimeMillis(); 39. try 40. while(n=bis.read()=0) 41. /sum+=n; 42. 43. catch(IOExceptione) 44. /TODOAuto-generatedcatchblock 45. e.printStackTrace(); 46. 47. longt=System.currentTimeMillis()-t1; 48. System.out.println(sum:+sum+time:+t); 49. catch(FileNotFoundExceptione) 50. /TODOAuto-generatedcatchblock 51. e.printStackTrace(); 52. 53. 54. MappedByteBufferbuffer=null; 55. try 56. buffer=newRandomAccessFile(/home/tobacco/test/res.txt,rw).getChannel().map(FileChannel.MapMode.READ_WRITE,0,1253244); 57. intsum=0; 58. intn; 59. longt1=System.currentTimeMillis(); 60. for(inti=0;i1253244;i+) 61. /n=0x000000ff&buffer.get(i); 62. /sum+=n; 63. 64. longt=System.currentTimeMillis()-t1; 65. System.out.println(sum:+sum+time:+t); 66. catch(FileNotFoundExceptione) 67. /TODOAuto-generatedcatchblock 68. e.printStackTrace(); 69. catch(IOExceptione) 70. /TODOAuto-generatedcatchblock 71. e.printStackTrace(); 72. 73. 74. 75. 测试结果:1. sum:0time:1458 2. sum:0time:67 3. sum:0time:8由此可见,将文件部分或者全部映射到内存后进行读写,速度将提高很多。这是因
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国企转让工人合同范本
- 商铺购买大坑合同范本
- 外墙外包清洗合同范本
- 售后配件回收合同范本
- 土方附加协议合同范本
- 墓园个人买卖合同范本
- 外贸合同中的取消协议
- 回收油漆商户合同范本
- 国际户外广告合同范本
- 大型维修改造合同范本
- 钢围檩及钢支撑施工质量验收标准
- 消防安全知识试题及答案模板
- 2025年骨干教师选拔笔试试题及答案
- 出租商场货架合同范本
- 中国南水北调集团笔试题库
- 人工智能在智慧港口基础设施中的应用分析
- 2025-2030中国盐化工国际对标分析与本土企业突破路径专题报告
- 瑞金市2025年公开招聘城市社区工作者【46人】考试参考试题及答案解析
- 2025年共青团入团考试题库(附答案)
- 2025海康威视安检机用户手册
- 2025年中国华电集团有限公司“青年骏才”招聘和校园招聘笔试参考题库附带答案详解
评论
0/150
提交评论