通过扩展RandomAccessFile类使之具备Buffer改善I/O性能 - 编程入门网
(buf, pos, buf.length - pos);
if (n > 0)
count = n + pos;
}
}
通过扩展RandomAccessFile类使之具备Buffer改善I/O性能(2)时间:2011-06-19 崔志翔1.3.[BufferedOutputStream]
可见,Buffered I/O putStream每读/写一个字节,若要操作的数据在BUF中 ,就直接对内存的buf[]进行读/写操作;否则从磁盘相应位置填充buf[],再直 接对内存的buf[]进行读/写操作,绝大部分的读/写操作是对内存buf[]的操作。 1.3.小结 内存存取时间单位是纳秒级(10E-9),磁盘存取时间单位是毫秒级(10E-3 ),同样操作一次的开销,内存比磁盘快了百万倍。理论上可以预见,即使对内 存操作上万次,花费的时间也远少对于磁盘一次I/O的开销。显然后者是通过增 加位于内存的BUF存取,减少磁盘I/O的开销,提高存取效率的,当然这样也增加 了BUF控制部分的开销。从实际应用来看,存取效率提高了32倍。 根据1.3得出的结论,现试着对RandomAccessFile类也加上缓冲读写机制。 随机访问类与顺序类不同,前者是通过实现DataInput/DataOutput接口创建 的,而后者是扩展FilterInputStream/FilterOutputStream创建的,不能直接照 搬。 2.1.开辟缓冲区BUF[默认:1024字节],用作读/写的共用缓冲区。 2.2.先实现读缓冲。 读缓冲逻辑的基本原理: A 欲读文件POS位置的一个字节。 B 查BUF中是否存在?若有,直接从BUF中读取,并返回该字符BYTE。 C 若没有,则BUF重新定位到该POS所在的位置并把该位置附近的BUFSIZE的字 节的文件内容填充BUFFER,返回B。 通过扩展RandomAccessFile类使之具备Buffer改善I/O性能(3)时间:2011-06-19 崔志翔以下给出关键部分代码及其说明:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |