【问题标题】:Big text file random access in C++C ++中的大文本文件随机访问
【发布时间】:2013-06-08 17:17:01
【问题描述】:

我正在编写一些用于语法分析的 C++ 函数。输入是一个潜在的大文本,输出是一个子字符串树(长话短说)。 目前我只使用 std::string 作为输入,但目的是分析文本文件。 我的功能不是“一次性”阅读(说它可能经常需要倒带并回到以前阅读的位置)。

我在问自己,将所有文件复制到 std::string 中,然后只读取字符串是否会提高性能,或者密集使用 std::basic_istream::seekg 是否没有开销(我是不太清楚文件是如何存储在 RAM 中的)。

你能给我一个提示吗?

【问题讨论】:

  • 文件有多大?兆字节?千兆字节?

标签: c++ text file-io


【解决方案1】:

我在问自己复制所有内容是否会提高性能 在 std::string 中的文件,然后只读取字符串,

是的。

【讨论】:

  • 字符串分配在连续的内存块上,绳索(分段模型)会好得多。
  • @Sarang 取决于输入数据的大小。高达几兆字节?使用连续块。除此之外,绳子可能是有益的。对于非常大的数据,您都不会这样做,而是使用内存映射文件。
  • 是的,我同意,这完全取决于文件的大小。
  • 好的,谢谢大家。我认为文件不会超过 50 兆字节,所以我想我应该使用 std::strings
猜你喜欢
  • 1970-01-01
  • 2015-01-10
  • 2017-05-07
  • 2017-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多