.net - 是否有一种经过验证的方法可以在 .NET 中非常快速地访问非常大(> 1 GB)二进制文件的特定区域

标签 .net performance parsing file-io binaryfiles

使用非常大的原始二进制数据文件,我将创建一个大型二进制文件(大于 1 GB,通常大于 4 GB),其中包含来自任意数量的传感器(1 到 64 个)的传感器数据。新处理的文件将由用户在 GUI 中使用,他们将在文件中跳转,查看不同的时间段或可能定义的其他索引。访问尽可能顺利非常重要,而且我也希望只加载所需的内容(用户看到的内容加上可能的一点缓冲区)。

我想构建处理后的数据文件,使其在开头有一个索引,然后用于跳转到人们想要去的任何点。

我应该从头开始写这个吗?或者是否有一些可以使用的辅助库?

我不只是在原始原始数据文件上添加一些索引的原因是,它的创建方式绝对不是读取单个传感器(运行压缩、存储在 DCT block 中的数据等)的最佳方式。 .).

最佳答案

您可以使用内存映射文件。在 .NET 4.0 中现在有包装器: http://msdn.microsoft.com/en-us/library/system.io.memorymappedfiles.memorymappedfile.aspx

如果您需要定位较早版本,则必须自己调用 API 方法: http://msdn.microsoft.com/en-us/library/aa366537.aspx

关于.net - 是否有一种经过验证的方法可以在 .NET 中非常快速地访问非常大(> 1 GB)二进制文件的特定区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3365992/

相关文章:

json - Postgres 决策、JSON 或额外的列?

parsing - 如何批量处理格式不良的文本文件?

php - 从 PHP 中的字符串中提取 html 属性

.net - 使用独立于底层数据库的数据访问代码创建 .NET 应用程序

c# - 在这种情况下,LINQ是最好的解决方案吗? LINQ到数据集

c# - smtp 客户端 "failure sending mail"

c++ - C/C++、Windows 控制台应用程序的速度是否取决于目标是 32 位还是 64 位?

r - 对于高基数分组,为什么使用 dplyr 管道 (%>%) 比等效的非管道表达式慢?

c# - 使用任务并行库的更好方法是什么

android - 使用 Xpath 在 Android 中解析 XMl