我正在处理一个大的(〜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分钟。我的问题是三个方面:
谢谢!
答案 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;
}