如何从QT中的txt文件加载500MB数据

时间:2018-09-27 19:34:00

标签: qt

我正在处理一个大的(〜500Mb)RAW txt文件。 文件中大约有20,000,000行。 每行包含一个double和一个int。例如:

45782.1234852 10

下面是我的简单代码:

QTextStream rdStream(&qFile_Input);
while (!rdStream.atEnd())
{
//QStringList qList_data=rdStream.readLine().split(" ",QString::SkipEmptyParts);
    rdStream.readLine();
}

仅需大约30秒即可读取QTextStream :: readLine();

如果我将.split(“”,QString :: SkipEmptyParts)添加到Qstringlist中,则所需的总时间将跳至5分钟。我的问题是三个方面:

  1. 时间差距从何而来?
  2. 有没有办法缩短处理时间?
  3. 如果我的文件大于PC的RAM,我会遇到 错误?如果可以,该怎么办?

谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,拆分部分似乎在时间上增加了巨大的开销。除了使用Qt类QTextStream外,您可能还可以使用c ++标准库中的方法。您应该会获得比现在看到的5分钟更好的性能。

#include <fstream>

int main()
{
   std::ifstream infile("thefile.txt");

   double a;
   int b;

   while(infile >> a >> b)
   {
      //Do something with a and b here, they've been read
   }

   return 0;
}