为什么利用数组批量copy这么快啊?
太不可思议了
太不可思议了
2014-11-27
我仔细看了下buffered那个copy 的方法:
BufferedInputStream bis=new BufferedInputStream(
new FileInputStream(destFile));
BufferedOutputStream bos=new BufferedOutputStream(
new FileOutputStream(destFile));
int c;
while((c=bis.read())!=-1)//从这里看应该是一个一个字节的读取,但是他读出后先放到一个默认大小的缓冲区,因为是BufferedOutputStream。等到缓冲区满了,刷新缓冲区。
//而批量的那个copy 方法是一次就读取一块字节数组,所以是整块整块的读取数据的。所以批量读取的是最快的。
//BufferedOutputStream 可以改进成也是按照一块块的读取 在循环前面顶一个字节数组,代码我就不写了 这样应该是最快的
//总结下:BufferedOutputStream通过增加缓冲减少内存访问次数,以此来减少运行时间。而批量操作是读取单位变大了,每一次按照块来读,所以极大程度的降低了程序的运行时间。
这是我的想法。可以参考下。你有什么想法,我们可以交流下。
举报