C++ 实时访问光盘上文件中的数据*
我有以下问题要解决。我必须构建一个图形查看器来查看大量数据集 我们有一些特定格式的文件,其中有数百万条表示实验结果的记录。每条记录代表一个大型图表上的采样点。我见过的最大的文件有4370万条记录 一个文件平均包含1000万条记录。每条记录都很小(76字节+可选的每条12字节)。完整的数据太大,无法加载到主内存中。我构建了一种新的文件格式,它将数据压缩到每个记录48字节,并将数据组织成相互关联的块。我想通过在2D/3D绘图中显示记录来“查看”数据。由于数据非常密集,我希望通过加载更多数据并从主内存中删除视图中未显示的数据来逐步提高详细程度 我还希望实时访问一组相关记录,并预加载类似记录,以便将加载时间保持在最低限度。这将为用户提供一个平滑的控制来查看数据,而不是像在YouTube上通过非常缓慢的互联网连接观看视频那样的体验。用户不能随机,必须使用控件进行导航,我想使用此信息将相关记录加载到主内存中 必须根据当前主存储器中的内容从光盘中逐步加载数据。可以删除主内存中当前上下文中不需要的记录,并在需要时重新加载C++ 实时访问光盘上文件中的数据*,c++,data-structures,C++,Data Structures,我有以下问题要解决。我必须构建一个图形查看器来查看大量数据集 我们有一些特定格式的文件,其中有数百万条表示实验结果的记录。每条记录代表一个大型图表上的采样点。我见过的最大的文件有4370万条记录 一个文件平均包含1000万条记录。每条记录都很小(76字节+可选的每条12字节)。完整的数据太大,无法加载到主内存中。我构建了一种新的文件格式,它将数据压缩到每个记录48字节,并将数据组织成相互关联的块。我想通过在2D/3D绘图中显示记录来“查看”数据。由于数据非常密集,我希望通过加载更多数据并从主内存
Ram在大多数现代文件系统(Linux、Unix、Windows)下,您可以将文件映射到内存中 这意味着您可以访问文件的内容,就像它完全在内存中一样(例如,您可以使用数据[i++]、strchr(数据,…),等等),并且是操作系统在使用的内存和文件之间进行映射。当您想要读取一些尚未在内存中的数据时,o/s将从文件中获取该数据。
您应该阅读这个问题的答案:在大多数现代文件系统(Linux、Unix、Windows)下,您可以将文件映射到内存中 这意味着您可以访问文件的内容,就像它完全在内存中一样(例如,您可以使用数据[i++]、strchr(数据,…),等等),并且是操作系统在使用的内存和文件之间进行映射。当您想要读取一些尚未在内存中的数据时,o/s将从文件中获取该数据。
您应该阅读这个问题的答案:我认为您正在寻找类似于游戏中用于存储关卡几何图形的组织,只是您可能(取决于您的程序如何工作以及需要显示的数据)只需要一个维度。请参阅和类似的方法(文章底部)。我认为您正在寻找类似于游戏中用于存储关卡几何图形的组织,只是您可能(取决于您的程序工作方式和需要显示的数据)只需要一个维度。请参阅和类似的方法(文章底部)。此外,我可以自由更改文件格式并组织数据以适应我的目的。我使用OpenGL来查看数据。你考虑过将这些数据移植到数据库吗?任何像样的数据库都能解决所有这些问题。PostgeSQL甚至还有与图形相关的扩展名,您可能会发现这些扩展名很有用。此外,我可以自由更改文件格式并组织数据以适应我的目的。我使用OpenGL来查看数据。你考虑过将这些数据移植到数据库吗?任何像样的数据库都能解决所有这些问题。PostgeSQL甚至还有与图形相关的扩展,您可能会发现这些扩展很有用