gpt4 book ai didi

c++ - 如何避免在程序启动时重新加载大数据

转载 作者:搜寻专家 更新时间:2023-10-30 20:17:34 24 4
gpt4 key购买 nike

我的问题都是关于提示和技巧的。我目前正在做一个项目,我有一个非常大的(~1Gb)文件和数据。首先,我需要提取数据。此提取需要 10 分钟。然后我进行计算。下一个计算取决于上一个。我们称它们为 calculation1、calculation2 等等。假设我已经正确完成提取部分,我目前面临两个问题:

  1. 每次启动程序时,它至少运行 10 分钟。我无法避免,所以我必须计划调试。
  2. 接下来的每一次计算都需要更多时间。

考虑到第一个问题,我假设,如果数据库比读取文件更快,某种数据库可能会有所帮助,我对此表示怀疑。

第二个问题可能会被克服,如果我把我的大程序分成小程序,每个小程序都会做:读文件-做东西-写文件。所以下一个阶段总是可以从上一个阶段读取文件,以进行调试。但是它为文件 I/O 引入了许多浪费的代码。

我认为这两个问题都可以通过一些策略来解决,例如:编写和测试提取模块,而不是启动它并将所有数据提取到 RAM 中。比编写 calculation1,并启动它以某种方式直接从 extract 模块的 RAM 中获取数据。以此类推进行下一次计算。所以我的问题是:

  1. 是否有最小化文件负载的提示和技巧?
  2. 有没有办法在程序之间共享 RAM 和对象?

顺便说一下,我在 Perl 上写这个任务是因为我需要它很快,但我稍后会在 C++ 或 C# 上重写它,所以欢迎任何特定语言或语言不可知的答案。

谢谢!

[编辑]

数据文件不会改变它就像是巨大的不可变知识源。而且它不完全是 1Gb,读取它不需要 10 分钟。我只是想说,那个文件很大,阅读它的时间很长。在我的机器上,将 1 Gb 文件读取+解析为正确的对象大约需要几分钟。这仍然很糟糕。

[/编辑]

最佳答案

在我当前的系统上,Perl 在 2 秒内将整个 1GB 的文件复制到内存中。所以我相信您的问题不是读取文件而是解析文件。

因此,我能想到的直接解决方案是对其进行预处理,例如,将您的数据转换为实际的代码源。我的意思是,您可以准备数据并直接在脚本中对其进行硬编码(当然是使用另一个文件)。

但是,如果读取 是一个实际问题(我对此表示怀疑),您可以使用将数据存储在内存中的数据库 (example)。无论如何它都会更快,因为您的数据库在启动时读取一次数据并且您不会像程序那样频繁地重新启动数据库。

关于c++ - 如何避免在程序启动时重新加载大数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30225745/

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