gpt4 book ai didi

c# - 是否有接受 Span 或 Memory 的 MemoryStream?

转载 作者:行者123 更新时间:2023-12-04 16:39:37 28 4
gpt4 key购买 nike

我正在从许多来源(MemoryMappedFiles 或 FileStream)读取数据。一个问题是,每次读取字节、整数或其他类型的调用都非常慢。所以我想将一大块数据读入一个数组,并将其交给一个轻量级的内存流,并在那里读取各个组件。
问题是.NET 的当前 MemorySrream 只允许构造函数中的数组,但我需要一个能够处理 Span 或 Memor 的流。有一个 ReadOnlyMemoryStream 作为深埋在 .NET 源代码中的内部类。
有趣的是,虽然 ReadOnlyMemoryStream 比 MemoryStream 慢,但我认为它不应该有太大的不同。
有没有更好的实现?

最佳答案

如果您有 Span ,你已经尽可能快了,直接通读它而不是在它上面放一个流。
A Span甚至可以让您访问真正漂亮的东西,例如直 struct没有副本的映射( MemoryMarshal.Cast ),跨度增量(相当于一个流前进, Unsafe.Add 的一部分),如果确实需要块副本( Unsafe.Copy )等。

关于c# - 是否有接受 Span<T> 或 Memory<T> 的 MemoryStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63636836/

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