4

我想知道在从字节数组()创建的aBinaryReader上使用 a 是否会显着降低性能。MemoryStreambyte[]

我想读取二进制数据,并将该数据作为字节数组获取。我目前正在选择两种读取数据的方法,并且必须相应地实现许多读取方法。在每次读取操作之后,我需要读取数据之后的位置,因此我正在考虑使用BinaryReader. 第一种,非 BinaryReader 方法:

object Read(byte[] data, ref int offset);

第二种方法:

object Read(BinaryReader reader);

这样Read()的方法将被非常频繁地调用,在相同的数据上连续调用,直到所有数据都被读取。

那么,使用 aBinaryReader感觉更自然,但对性能有很大影响吗?

4

2 回答 2

2

每次调用 Read(byte[]) 都会产生大量垃圾。MemoryStream 将有 40 个字节,而 BinaryReader 我停止计数为 64 个字节。通常也使用 Dispose,尽管它不执行任何操作。从您的问题中无法判断该开销是否重要。

我个人更喜欢 Read(BinaryReader) 重载,不仅仅是因为它更有效。这也提供了更改数据源的灵活性。它不再必须在 byte[] 中,您可以从 FileStream 或 NetworkStream 提供它。

于 2010-06-12T16:58:08.287 回答
-1

如果使用 BinaryReader 感觉更自然,那就这样做。我非常怀疑与从数组中读取相比有任何明显的性能影响。

于 2010-06-12T15:42:31.143 回答