【问题标题】:Is saving a large file into char array is correct?将大文件保存到 char 数组中是否正确?
【发布时间】:2016-11-27 01:53:35
【问题描述】:

我有一个实时项目,对某个文本文件的每一行都有繁重的处理,您对存储该文本有什么建议?

我现在要做的是将所有文本文件存储在 char* 变量中,然后使用该变量而不是文件,我的问题是当文本变大时我该怎么办?并且有可能达到char数组的限制,内存堆会变大:(

我想到的另一个解决方案是,每次我想要特定的文本行时,我都会遍历文件并阅读它,然后使用它,但是这种解决方案使我的程序变得如此缓慢,正如我之前提到的,时间对我来说很重要,你们有什么建议?

有没有其他足够快的方法让我可以使用它?

【问题讨论】:

  • 您没有提到使用了哪个 RTOS(或者您的“实时”只是“应该很快”)。它可能有内存映射文件。
  • @KIIV 它应该是快速的 :)
  • 这真的取决于情况或文件是什么。如果您想真正提高性能并且情况允许,我建议提前将文件解析为更快的内部数据结构而不是原始文本。如果文件很大以至于内存会受到限制,我建议将其解析为具有适当索引并在数据库上操作的数据库。无论哪种方式,如果可以的话,我现在绝对建议使用std::vector<char>std::string 而不是char *。从短期和长期来看,它可能会让你的生活更轻松。

标签: c++ text-files processing-efficiency cpu-speed


【解决方案1】:

如果它真的很大,为什么要将它存储在 RAM 中?使用内存映射文件

【讨论】:

  • 当时并不大,但我担心它会变大,内存映射文件是否比变量赋值更快?
  • 我只会在必要时重写代码。如果现在,您可以将整个文件存储在 RAM 中,请保持原样。你的意思是?你能提供一些用例吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多