Man*_*oon 6 c# memorystream bytearray
我使用BinaryReader(MemoryStream(MyByteArray))来读取可变大小的记录并在内存中处理它们.只要数组中的字节流大小小于约1.7 GB,这就可以正常工作.之后(这是我的64位系统中整数的最大大小)你不能创建一个更大的bytearray,虽然我有足够的实内存.所以我的解决方案是读取字节流并将其拆分成几个字节数组.
然而,现在我不能"读取"字节数组边界,并且,由于我的数据是可变格式,我无法确保字节数组总是在整个记录上完成.
对于处理非常大的数据集并且仍然需要速度的人来说,这必然是一个常见问题.
我该如何处理这个问题?
编辑:阅读基础知识后,我意识到内存映射文件可能比顺序访问的普通 I/O 慢。
你有没有尝试过这样的事情:
var stream = new FileStream("data",
FileMode.Open,
FileAccess.Read,
FileShare.Read,
16 * 1024,
FileOptions.SequentialScan)
var reader = new BinaryReader(stream);
Run Code Online (Sandbox Code Playgroud)
如果您的数据驻留在文件中并且您可以使用 .NET 4.0,请考虑使用MemoryMappedFile.
然后,您可以使用 aMemoryMappedViewStream来获取流,或者使用 aMemoryMappedViewAccessor来获取BinaryReader类似的接口。
| 归档时间: |
|
| 查看次数: |
3228 次 |
| 最近记录: |