c# - 是否有接受 Span 的 MemoryStream或内存?
问题描述
我正在从许多来源(MemoryMappedFiles 或 FileStream)读取数据。一个问题是,每次读取字节、整数或其他类型的调用都非常慢。所以我想把一大块数据读入一个数组,然后把它交给一个轻量级的内存流,并在那里读取各个组件。
问题是 .NET 的当前 MemorySrream 确实只允许在构造函数中使用数组,但我需要一个能够处理 Span 或 Memor 的 Stream。有一个 ReadOnlyMemoryStream 作为深埋在 .NET 源代码中的内部类。
有趣的是,尽管 ReadOnlyMemoryStream 比 MemoryStream 慢,但我认为它不应该有很大的不同。
有没有更好的实现方式?
解决方案
如果你有一个Span
,你已经和它一样快了,直接通读它而不是在它上面放一个流。
甚至可以Span
让您访问真正漂亮的东西,例如struct
没有副本的直接映射 ( MemoryMarshal.Cast
)、跨度增量(相当于流前进,部分Unsafe.Add
)、如果实际需要则块副本 ( Unsafe.Copy
) 等。
推荐阅读
- node.js - 如何使用aws IOT按钮一次发送短信和通话?
- python - 用于使用 python 从文本文件中仅获取第一行的正则表达式代码
- python - 在嵌套列表中搜索范围之间的数字
- python - 如何对 Poly3DCollection 进行明暗处理
- java - 在 Java 中使用 Kafka 流创建差异流很热门?
- mysql - mysql 如果第一次不存在则回退到另一条记录
- windows - Powershell脚本通过ssh通过teamcity运行到windows
- deployment - WebLogic 12c 在部署期间不遵守“prefer-web-inf-classes”或“prefer-application-packages”
- apache - 当从 http//www 指向 https//www 时出现重定向循环
- c++ - 交换数组