按字节读取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广告太多,迁移至博客园。
按字节读取txt文件缓存区大小设置多少比较好?的更多相关文章
- Java 读取TXT文件的多种方式
1).按行读取TXT文件package zc;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFound ...
- 用C#读取txt文件的方法
1.使用FileStream读写文件 文件头: using System;using System.Collections.Generic;using System.Text;using System ...
- Java读取txt文件
package com.loongtao.general.crawler.slave.utils; import java.io.BufferedReader; import java.io.File ...
- java 读取TXT文件的方法
java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...
- java读取TXT文件的方法
java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...
- Java读取txt文件信息并操作。
一.java读取txt文件内容 import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.Fi ...
- 用C#读取txt文件的方法(转)
.使用FileStream读写文件 文件头: using System; using System.Collections.Generic; using System.Text; using Syst ...
- 怎样用 I/O流读取txt文件?
java.io包提供了用来永久保存对象状态的机制,可处理各种类型的流,如文件流.字节流.字符流等,还提供实现可串行化Serializable接口.可处理对象流. Java语言提供3种自动生成的标准流. ...
- python3 读取txt文件数据,绘制趋势图,matplotlib模块
python3 读取txt文件数据,绘制趋势图 test1.txt内容如下: 时间/min cpu使用率/% 内存使用率/% 01/12-17:06 0.01 7.61 01/12-17:07 0.0 ...
随机推荐
- ASP.NET实现大文件上传和下载
总结一下大文件分片上传和断点续传的问题.因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况.http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件 ...
- PHP快速教程
1.本文主要针对有C语言(或其他编程语言)基础的人快速学习PHP的,所以不会对一些基础知识作过多解释,比如“=”是赋值不是等于. 2.本文适合已学过一门编程语言,想要快速入门PHP的人. 3.基本上看 ...
- vue 使用props 实现父组件向子组件传数据
刚自学vue不久遇到很多问题,刚好用到的分组件,所以就用到传递数据 弄了好久终于搞定了,不多说直接上代码 父组件: <template> <headers :inputName=&q ...
- zabbix自定义模板监控oracle
zabbix服务器端安装:zabbix-3.2.6.tar.gzzabbix client端安装:zabbix-agent-3.2.6-1.x86_64.rpm 1.首先必须在目标机器安装zabbix ...
- 2019 Nanchang Onsite
D.Interesting Series F(n)实际上是一个等比数列的和,将它从递推式转变为通项公式(a^n-1)/(a-1),这里只需要确定n就可以. 题目要求选取k大小的所有子集的答案求和,可以 ...
- 字符串 映射相应的 函数 字符串驱动技术—— MethodAddress , MethodName , ObjectInvoke
http://blog.csdn.net/qustdong/article/details/7267258 字符串驱动技术—— MethodAddress , MethodName , ObjectI ...
- 动态修改settings
ide visual studio2010 注意范围是用户 注意改完要save
- arduino库函数1
https://wenku.baidu.com/view/e657b1f0bcd126fff6050baf.html 的阅读笔记.现在到了 第四十页. setup应该是 在开始 执行一次. 然后 lo ...
- [SDOI2016]征途 —— 斜率优化DP
时隔多年没有碰斜率优化了... 想当年被斜率优化虐的死去活来,现在看看...也就那样吧. Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计 ...
- UVa 11582 Colossal Fibonacci Numbers! 紫书
思路是按紫书上说的来. 参考了:https://blog.csdn.net/qwsin/article/details/51834161 的代码: #include <cstdio> # ...