c# - 如何使用缓冲流与使用源流上的read方法读取相同数量的字节不同?

iRa*_*esh 1 c# stream

谷歌搜索并阅读了许多相关文章,但我并不真正理解如何使用bufferstream执行更好的方式与使用流上的读取方法一次读取相同数量的字节相比.根据我的理解,bufferstream一次从源流中读取许多字节数以节省往返次数.但这与使用read(byte [],index,count)有何不同,其中count =使用缓冲流读取的相同字节数.请帮我理解.

Bal*_*ick 5

从许多数据源(例如文件)读取时,操作中最慢的部分通常是执行每个单独的读取请求.所以关键是要减少"从源XXX给我N字节数据"的请求数量.

在文件访问的情况下,进行1次10 MB读取比读取1次10次读取更有效.

什么缓冲在幕后阅读比你要求的更多,期待你不久之后可能会再次阅读.

因此,尽管您只返回所要求的数据块,但其余数据仍保存在缓冲区中.这样,当您下次请求数据时,您想要的数据通常已经在缓冲区中,并且需要更少的对底层数据源的请求.

请注意,预读行为通常首先在创建缓冲区时执行,或者在执行第一个读取请求时执行.然后缓冲区将根据需要进行额外的预读.