• 按字节读取txt文件缓存区大小设置多少比较好?


    读取 txt 文件常规写法有逐行读取和按照字节缓存读取,那么按照字节缓存读取时,设置缓存区多大比较好呢?百度了一下,没发现有说这个问题的,自测了一把,以事实说话。

    常规读取方法如下:

    // 字节流读取
    try(InputStream in = new FileInputStream("test.txt")) 
    {
        byte[] readBuffer = new byte[1024];
        while(in.available() > 0) 
        {
            in.read(readBuffer);
        }
    } catch (Exception e) {
        
    }

    我的 test.txt 文件大小为 200k,按照每次读取 1024字节,执行 3 次分别耗时:893110、880807、1202766  纳秒

    按照每次读取 1024 * 1024 来读取,执行 3 次分别耗时:1028437、1260876、800448 纳秒

    直接一次性读完(new byte[in.available()]),执行 3 次分别耗时:515134、265682、835523

    如上3种方式,貌似缓存区间越大越好,事实是不是这样呢?我们将文件扩大20倍左右(3826k),按顺序分别执行 3 次。

    每次读取 1024字节:15811857、16539536、17310929;

    每次读取 1024 * 1024字节:4509521、3230585、3017516;

    直接一次性读完(new byte[in.available()]):9265355、5899443、4731228

    每次读取 1024 * 1024 * 1024字节:938333314、489835646、505372921

    总结:
    I/O字节读取缓冲区不宜设置过大,根据实际业务场景来,如果文件大部分小于1M,一次性读取完即可,大于 1M 的还是按照 1M每次读取比较好。小伙伴们觉得呢?

    申明:原文发表在CSDN(https://blog.csdn.net/kuloujianzun/article/details/84134786),但因为CSDN广告太多,迁移至博客园。

  • 相关阅读:
    SQL——UPDATE(改)
    SQL——INSERT INTO(增)
    SQL——SELECT(查)
    Python——raise引发异常
    Python——异常处理
    Python——多态、检查类型
    Python——继承
    Python——封装
    popitem()方法
    pop(D)方法
  • 原文地址:https://www.cnblogs.com/xsbx/p/11429655.html
Copyright © 2020-2023  润新知