gpt4 book ai didi

c# - Performance : use a BinaryReader on a MemoryStream to read a byte array, 还是直接读取?

转载 作者:行者123 更新时间:2023-11-30 12:53:03 31 4
gpt4 key购买 nike

我想知道在从字节数组 (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) 重载,不仅仅是因为它更有效率。这也提供了更改数据源的灵 active 。它不必再位于 byte[] 中,您可以从 FileStream 或 NetworkStream 中获取它。

关于c# - Performance : use a BinaryReader on a MemoryStream to read a byte array, 还是直接读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3029189/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com