メソッドの実装をStreamReader.Read見ると、どちらも内部ReadBufferメソッドを呼び出していることがわかります。
Read()メソッドは最初に内部バッファに読み込み、次にバッファを 1 つずつ進めます。
public override int Read()
{
if ((this.charPos == this.charLen) && (this.ReadBuffer() == 0))
{
return -1;
}
int num = this.charBuffer[this.charPos];
this.charPos++;
return num;
}
Read(char[]...)も呼び出しますReadBufferが、代わりに呼び出し元によって提供された外部バッファーに入れます。
public override int Read([In, Out] char[] buffer, int index, int count)
{
while (count > 0)
{
...
num2 = this.ReadBuffer(buffer, index + num, count, out readToUserBuffer);
...
count -= num2;
}
}
Read()したがって、唯一のパフォーマンスの低下は、よりもはるかに多くの回数を呼び出す必要があることRead(char[])であり、それは仮想メソッドであるため、呼び出し自体が遅くなると思います。