通过扩展RandomAccessFile类使之具备Buffer改善I/O性能 - 编程入门网
fy file
this.buf[(int)(pos - this.bufstartpos)] = bw;
} else if (((pos == 0) && (this.fileendpos == 0))
|| (pos == this.fileendpos + 1)) { // write pos is append pos
this.buf[0] = bw;
this.fileendpos++;
this.bufusedsize = 1;
} else {
throw new IndexOutOfBoundsException();
}
this.bufdirty = true;
}
this.curpos = pos;
return true;
}
至此缓冲写基本实现,逐字节COPY一个12兆的文件,(这里牵涉到读和写, 结合缓冲读,用BufferedRandomAccessFile试一下读/写的速度):
可见综合读/写速度已超越 BufferedInput/OutputStream+DataInput/OutputStream。 优化BufferedRandomAccessFile。 通过扩展RandomAccessFile类使之具备Buffer改善I/O性能(5)时间:2011-06-19 崔志翔优化原则: 调用频繁的语句最需要优化,且优化的效果最明显。 多重嵌套逻辑判断时,最可能出现的判断,应放在最外层。 减少不必要的NEW。 这里举一典型的例子:
seek函数使用在各函数中,调用非常频繁,上面加重的这行语句根据pos和 bufsize确定buf[]对应当前文件的映射位置,用"*"、"/" 确定,显然不是一个好方法。 优化一:this.bufstartpos = (pos << bufbitlen) >> bufbitlen; 优化二:this.bufstartpos = pos & bufmask; // this.bufmask = ~ ((long)this.bufsize - 1); 两者效率都比原来好,但后者显然更好,因为前者需要两次移位运算、后者 只需一次逻辑与运算(bufmask可以预先得出)。 至此优化基本实现,逐字节COPY一个12兆的文件,(这里牵涉到读和写,结 合缓冲读,用优化后BufferedRandomAccessFile试一下读/写的速度):
可见优化尽管不明显,还是比未优化前快了一些,也许这种 |
|||||||||||||||||||||||||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |