gpt4 book ai didi

c++ - *实时*访问光盘文件中的数据

转载 作者:太空宇宙 更新时间:2023-11-04 12:12:35 27 4
gpt4 key购买 nike

我有以下问题需要解决。我必须构建一个图形查看器来查看海量数据集。

我们有一些特定格式的文件,其中包含数百万条代表实验结果的记录。每条记录代表大图上的一个样本点。我见过的最大的文件有 4370 万条记录。

一个文件平均包含 1000 万条记录。每条记录都很小(76 字节 + 可选的每条 12 字节)。完整的数据无法加载到主存中,因为它太大了。我构建了一种新的文件格式,将数据压缩为每条记录 48 个字节,并将数据组织成相互关联的 block 。我想通过在 2D/3D 图中显示记录来“查看”数据。由于数据非常密集,我想通过加载更多数据并从主内存中删除 View 中未显示的数据来逐步提高详细程度。

我还想实时访问相关记录组并预加载类似记录,以便将加载时间保持在最低限度。这将为用户提供流畅的控制来查看数据,而不是类似于在互联网连接速度非常慢的情况下在 YouTube 上观看视频的体验。用户不能随意,必须使用控件进行导航,我想使用此信息将相关记录加载到主内存中。

数据必须根据当前主内存中的内容从光盘中逐步加载。主内存中当前上下文不需要的记录可以删除,如果需要则重新加载。

  1. 如何根据一些哈希值高速访问光盘中的数据

  2. 如果要在当前上下文中查看的数据太大,我该如何管理主内存。如果您的回答是详细程度,那么我如何为大型数据集构建它,这些数据是否应该成为文件的一部分?

过去两周我一直在研究这个,但由于 IO 速度,我似乎卡住了。

我在原生 C++ 中工作,我不能在 GPL 下工作。如果您需要更多信息,请告诉我。

拉姆

最佳答案

在大多数现代文件系统(Linux、Unixes、Windows)下,您可以将文件映射到内存中。

这意味着您可以访问文件的内容,就好像它完全在内存中一样(例如,您可以使用 data[i++]、strchr(data,..) 等)并且是操作系统在它们之间进行映射使用的内存和文件。当你想读取一些不在内存中的数据时,o/s 将从文件中获取它。你应该阅读这个问题的答案:Mmap() an entire large file

关于c++ - *实时*访问光盘文件中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9224465/

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