繁体   English   中英

性能:在MemoryStream上使用BinaryReader读取字节数组,还是直接读取?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM