在MSDN网站上指出:
缓冲区是内存中用于缓存数据的字节块,从而减少了对操作系统的调用次数.缓冲区可提高读写性能.缓冲区可用于读取或写入,但不能同时使用.BufferedStream的Read和Write方法自动维护缓冲区.
我应该在每个可能的场合使用这门课吗?
据布拉德艾布拉姆斯说,几乎从来没有:链接
不,围绕FileStream包装BufferedStream没有任何好处.我们大约4年前将BufferedStream的缓冲逻辑复制到FileStream中以鼓励更好的默认性能......事实上,我认为.NET Framework中没有任何Streams需要它,但是自定义Stream实现可能需要它.他们默认不做缓冲.
以下是我正在参加的在线课程的一些文字:
BufferedStream类是一个扩展Stream类的具体类,用于为其他类型的流提供额外的内存缓冲区,包括同步和异步.必须将BufferedStream类配置为在创建类的实例时读取或写入,但不能将BufferedStream配置为同时执行这两个任务.
Microsoft通过包含内置缓冲区来提高.NET Framework中所有流的性能.通过将BufferedStream应用于现有流(例如FileStream或MemoryStream),性能得到显着提高.将BufferedStream应用于现有.NET Framework流会产生双缓冲区.
BufferedStream类的最常见应用是在不包含内置缓冲区的自定义流类中.
我知道的最好的情况是BinaryFormatter直接从NetworkStream序列化/反序列化.在其间使用BufferedStream可将性能提高十倍.