美文网首页
Java--字节缓冲流的效率有多高?测试一下

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

作者: 归子莫 | 来源:发表于2020-04-24 16:47 被阅读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毫秒

    感谢

    黑马程序员

    以及勤劳的自己

    相关文章

      网友评论

          本文标题:Java--字节缓冲流的效率有多高?测试一下

          本文链接:https://www.haomeiwen.com/subject/mrnfwhtx.html