[英]Performance: use a BinaryReader on a MemoryStream to read a byte array, or read directly?
我想知道在从字节数组( byte[]
)创建的MemoryStream
上使用BinaryReader
是否会显着降低性能。
我想要读取二进制数据,并将该数据作为字节数组获取。 我目前正在决定两种读取数据的方法,并且必须相应地实现许多读取方法。 在每次读取操作之后,我需要在读取数据之后的位置,因此我正在考虑使用BinaryReader
。 第一种非BinaryReader方法:
object Read(byte[] data, ref int offset);
第二种方法:
object Read(BinaryReader reader);
这些Read()
方法将在相同数据上连续调用,直到读取完所有数据。
因此,使用BinaryReader
感觉更自然,但它对性能有多大影响?
每次调用Read(byte [])都会产生大量的垃圾。 MemoryStream将有40个字节,我停止计算BinaryReader的64个字节。 虽然它没有做任何事情,但通常也会使用Dispose。 从您的问题中无法判断出这些开销是否重要。
我个人更喜欢Read(BinaryReader)重载,而不仅仅是因为它更有效。 这也提供了更改数据源的灵活性。 它不必再位于byte []中,您可以从FileStream或NetworkStream中提取它。
如果使用BinaryReader感觉更自然,那就这样做。 我非常怀疑与数组读取相比,有任何明显的性能损失。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.