当前位置:  开发笔记 > 编程语言 > 正文

何时使用.NET BufferedStream类?

如何解决《何时使用.NETBufferedStream类?》经验,为你挑选了3个好方法。

在MSDN网站上指出:

缓冲区是内存中用于缓存数据的字节块,从而减少了对操作系统的调用次数.缓冲区可提高读写性能.缓冲区可用于读取或写入,但不能同时使用.BufferedStream的Read和Write方法自动维护缓冲区.

我应该在每个可能的场合使用这门课吗?



1> dewald..:

据布拉德艾布拉姆斯说,几乎从来没有:链接

不,围绕FileStream包装BufferedStream没有任何好处.我们大约4年前将BufferedStream的缓冲逻辑复制到FileStream中以鼓励更好的默认性能......事实上,我认为.NET Framework中没有任何Streams需要它,但是自定义Stream实现可能需要它.他们默认不做缓冲.


-1`FileStream`只是其中一个.net流,并且将单个字节写入`NetworkStream`,它不会覆盖`Stream`的通用`WriteByte()`方法,效率非常低.`BufferedStream`将极大地提升这个和其他用例的性能(参见@idn的回答)

2> hacker..:

以下是我正在参加的在线课程的一些文字:

BufferedStream类是一个扩展Stream类的具体类,用于为其他类型的流提供额外的内存缓冲区,包括同步和异步.必须将BufferedStream类配置为在创建类的实例时读取或写入,但不能将BufferedStream配置为同时执行这两个任务.

Microsoft通过包含内置缓冲区来提高.NET Framework中所有流的性能.通过将BufferedStream应用于现有流(例如FileStream或MemoryStream),性能得到显着提高.将BufferedStream应用于现有.NET Framework流会产生双缓冲区.

BufferedStream类的最常见应用是在不包含内置缓冲区的自定义流类中.


我无法理解将缓冲区应用于`MemoryStream`,因为它本质上已经是内存中一个巨大的`byte []`缓冲区.句子"通过将BufferedStream应用于现有流(例如FileStream或MemoryStream)而显着提高的性能"似乎不完整,并且可能缺少否定词"不是".想知道这是否实际上是一个误导性的答案......

3> 小智..:

我知道的最好的情况是BinaryFormatter直接从NetworkStream序列化/反序列化.在其间使用BufferedStream可将性能提高十倍.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有