假设缓冲区大小为BufferedReader
与 cbuf
相同。
我知道,每次进行 native 调用来读取每个字符时,FileReader
上的简单 read()
调用都会变慢。
FileReader
上的 read(char[] cbuf)
只需一次 native 调用即可读取 cbuf
大小的字符,类似于BufferedReader 的内容。
如果在 FileReader
和 BufferedReader
上使用 read(char[] cbuf)
方法,性能是否会有任何差异。
最佳答案
A read(char[] cbuf) on the FileReader would read cbuf size of chars with just one native call which is similar to that of the BufferedReader.
这是不正确的。没有读取 Java char[]
数组的 native 调用。 FileReader 实际上是一个分层在 FileInputStream 之上的
InputStreamReader
。InputStreamReader
运行一个 8k 内部缓冲区。因此文件一次最多可读取 8k。
So would there be any performance difference if read(char[] cbuf) method is being used on
FileReader
vsBufferedReader
.
您会读到一些观点,认为由于双缓冲,BufferedReader
读入缓冲区的速度较慢,但它们是不正确的。 BufferedReader
检测到这种情况并在可能的情况下直接进行读取。
简而言之,您不会注意到差异。
关于java - 阅读器与缓冲阅读器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15210578/