当使用.NET BufferedStream类?
-
20-08-2019 - |
题
在 MSDN网站状态:
一个缓冲区是存储器字节块 用于高速缓存数据,从而减少了 调用操作的数量 系统。缓冲器完善读写 性能。缓冲器可用于 读出或写入,但从来没有 两者同时进行。读取和 写BufferedStream方法 自动保持缓冲器。
我应该使用这个类在一切可能的场合?
解决方案
以下是从网上当然,我采取了一些文本:
在BufferedStream类是一个具体的 扩展Stream类类 并用于提供额外的 存储器缓冲器到另一种类型的 流,同步和 异步。该BufferedStream 类必须适当配置可以 读或写的时候一个实例 类被创建,但 BufferedStream不能被配置成 同时执行两个任务 时间。
微软改进的性能 .NET Framework中的所有数据流通过 包括一个内置的缓冲。该 性能显着改良 施加BufferedStream到现有 流,例如FileStream或 MemoryStream的。应用 BufferedStream到现有的.NET 框架流导致双 缓冲液中。
的最常见的应用 BufferedStream类是定制 不包括流类 内置的缓冲器。
其他提示
据布拉德拉姆斯,几乎从未:链路一>
没有,有一个从周围缠绕一BufferedStream零益处 的FileStream。我们复制BufferedStream的缓冲逻辑进入 的FileStream大约4年前,以鼓励更好的默认 性能......其实,我不认为有任何行旅中的 .NET框架需要它,但它可能会被定制需要 流实现,如果他们不默认做缓冲。
我知道的是,当BinaryFormatter的序列化/直接从反序列化的NetworkStream最佳情况。使用的BufferedStream其间提高性能十倍。
什么必须是用于每一个可能的场合是常识。有一个在利用从到一个MemoryStream当读写这个类没有用的,但做网络或磁盘IO时(如流,这些子系统不自己做缓冲)这可能是非常有用的。
在正常文件I / O流已经通过使用缓冲一个StreamReader / StreamWriter的。
由于在流读/写操作,通常使用需要一个字节数组读/写方法,你自然会提供一些缓冲自己。
如果你使用非常小的阵列,或使用WriteByte,你可能会在两者之间使用BufferedStream获得更好的性能。