Java--字节缓冲流的效率有多高?测试一下
博客说明
文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!
说明
说缓冲流的效率特别高,那么今天我们就来测试一下
基本流
采用普通的字节流
代码
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @author Buffered
* @date 2020/4/24 4:16 下午
*/
public class Buffered {
public static void main(String[] args) throws FileNotFoundException {
long start = System.currentTimeMillis(); //获取毫秒值
try (
FileInputStream fis = new FileInputStream("azlg.zip");
FileOutputStream fos = new FileOutputStream("copy.zip")
) {
// 读写数据
int b;
while ((b = fis.read()) != -1) {
fos.write(b);
}
} catch (IOException e) {
e.printStackTrace();
}
long end = System.currentTimeMillis(); //获取毫秒值
System.out.println("普通流复制时间:" + (end - start) + "毫秒");
}
}
时间
image-20200424163315031缓冲流
采用字节缓冲流来复制文件
代码
import java.io.*;
/**
* @author Buffered
* @date 2020/4/24 4:16 下午
*/
public class Buffered {
public static void main(String[] args) throws FileNotFoundException {
long start = System.currentTimeMillis(); //获取毫秒值
try (
BufferedInputStream fis = new BufferedInputStream(new FileInputStream("azlg.zip"));
BufferedOutputStream fos = new BufferedOutputStream( new FileOutputStream("copy.zip"))
) {
// 读写数据
int b;
while ((b = fis.read()) != -1) {
fos.write(b);
}
} catch (IOException e) {
e.printStackTrace();
}
long end = System.currentTimeMillis(); //获取毫秒值
System.out.println("缓冲流复制时间:" + (end - start) + "毫秒");
}
}
时间
image-20200424163743751缓冲流加上字节数组
在使用缓冲流的同时使用字节数组,能够更加提高复制的速度
代码
import java.io.*;
/**
* @author Buffered
* @date 2020/4/24 4:16 下午
*/
public class Buffered {
public static void main(String[] args) throws FileNotFoundException {
long start = System.currentTimeMillis(); //获取毫秒值
try (
BufferedInputStream fis = new BufferedInputStream(new FileInputStream("azlg.zip"));
BufferedOutputStream fos = new BufferedOutputStream( new FileOutputStream("copy.zip"))
) {
// 读写数据
int b;
byte[] bytes = new byte[8*1024];
while ((b = fis.read(bytes)) != -1) {
fos.write(b);
}
} catch (IOException e) {
e.printStackTrace();
}
long end = System.currentTimeMillis(); //获取毫秒值
System.out.println("缓冲流使用字节数组复制时间:" + (end - start) + "毫秒");
}
}
时间
image-20200424164111519结果
通过三段代码执行的时间分析,使用缓冲流能够大大增加文件复制的速度,舒勇字节数组则是可以经一部提高
一个5.7MB大小的文件,速度分别是34589毫秒到186毫秒到10毫秒
感谢
黑马程序员
以及勤劳的自己
网友评论