繁体   English   中英

阅读器与缓冲阅读器

[英]reader vs buffered reader

这将是对呼叫的性能差异read(char[] cbuf)之间FileReaderBufferedReader假定缓冲区的大小BufferedReader是相同cbuf

我知道,每次进行本机调用来读取每个字符时,对FileReader进行简单的read()调用的速度都会变慢。

FileReader上的read(char[] cbuf)将仅通过一个本地调用read(char[] cbuf) cbuf大小,这与BufferedReader调用类似。

如果在FileReaderBufferedReader上使用read(char[] cbuf)方法,那么性能会有任何差异。

FileReader上的read(char [] cbuf)将仅通过一个本地调用读取char的cbuf大小,这与BufferedReader的调用类似。

那是不对的。 没有读取到Java char[]数组的本机调用。 一的FileReader是一个真正的InputStreamReader铺在FileInputStream. InputStreamReader运行8k内部缓冲区。 因此,一次最多可读取8k文件。

如果在FileReaderBufferedReader上使用read(char [] cbuf)方法,那么性能会有任何差异。

您将看到以下观点:由于双缓冲, BufferedReader读入缓冲区的速度较慢,但​​它们是不正确的。 BufferedReader会检测到这种情况,并在可能的情况下直接进行读取。

简而言之,您不会发现任何区别。

该计划:BufferedReader占用一些空间,因此典型用途可以消耗更少的时间。

但是要对其进行衡量,因为性能结果取决于以下方面:

  • 读取操作的大小,时间和位置 (如果每次读取都刚好超过缓冲区长度,该怎么办?);
  • 计算硬件,本地软件和JVM;
  • 您通常是否可以为您的应用程序预测那些内容;
  • (为了获得JIT编译和其他运行时优化的好处)您的读取操作是否可预测,突发或持续。

此外,性能结果的重要性将取决于应用程序的功能要求。

您没有提到维护软件的问题,但通常值得考虑的是,软件是生命周期成本的主要部分。 维护使用标准库的代码比重新发明相同功能的代码容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM