Java--字节缓冲流的效率有多高?测试一下

2020-04-24  本文已影响0人  归子莫

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毫秒

感谢

黑马程序员

以及勤劳的自己

上一篇下一篇

猜你喜欢

热点阅读