假设read(char[] cbuf)
的缓冲区大小与FileReader
相同,在BufferedReader
和BufferedReader
之间调用cbuf
会有什么性能差异? 。
我知道每次进行本地调用以读取每个字符时,对read()
的简单FileReader
调用都会变慢。
read(char[] cbuf)
上的FileReader
只会显示cbuf
个字符大小,只有一个本地调用,类似于BufferedReader
。
如果在read(char[] cbuf)
vs FileReader
上使用BufferedReader
方法,那么会有任何性能差异。
答案 0 :(得分:3)
FileReader上的read(char [] cbuf)将读取cbuf大小的chars,只有一个本机调用,类似于BufferedReader。
这不正确。没有读入Java char[]
数组的本机调用。 FileReader实际上是InputStreamReader
分层FileInputStream.
InputStreamReader
运行8k内部缓冲区。因此,文件一次最多可读取8k。
如果在
FileReader
vsBufferedReader
上使用read(char [] cbuf)方法,那么会有任何性能差异。
您会看到BufferedReader
由于双缓冲而缓慢读入缓冲区的意见,但它们不正确。 BufferedReader
检测到这种情况,并在可能的情况下直接进行读取。
简而言之,您不会注意到差异。
答案 1 :(得分:1)
计划:BufferedReader占用一些空间,因此典型用途可以消耗更少的时间。
但要衡量它,因为绩效结果取决于以下事项:
此外,性能结果的重要性取决于应用程序的功能要求。
您没有提及维护软件的问题,但通常认为这是软件生命周期成本的主要部分。使用标准库的代码比重新创建相同功能的代码更容易。