【背景】关于项目读写文件数据,尤其时读写大数据时,特别费时,今天做了个测试
【资源大小】91.2MB的数据
【方法】
C++:
采用ofstream
Qt:
采用QFile+QTextStream
C++写入数据
QTime m_time;
ofstream ofs("D:/Projects/01-Sar/Sar/Sar/textC++.txt");
m_time.start();
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
data[i][j] = sqrt(chirp[i][j].real * chirp[i][j].real + chirp[i][j].img *chirp[i][j].img);
ofs << data[i][j] << ' ';//每个数据之间留有空格
}
ofs << endl;//换行
}
qDebug() << m_time.elapsed()/1000.00 << "s";
耗时:
从上面的输出框打印可以得到耗时64.701s,已经相当长时间。
Qt写入数据
QTime m_time;
QFile file("D:/Projects/01-Sar/Sar/Sar/textQTestStream.txt");
if (!file.open(QIODevice::ReadWrite| QIODevice::Text))return;
QTextStream txtOut(&file);
m_time.start();
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
data[i][j] = sqrt(chirp[i][j].real * chirp[i][j].real + chirp[i][j].img *chirp[i][j].img);
txtOut << data[i][j] << ' ';
}
txtOut << endl;
}
qDebug() << m_time.elapsed()/1000.00 << "s";
耗时:
总结:
对于耗时数据的读写操作,建议使用内存映射的方法:
可参考文章:
C/C++数据读写操作耗时比较:https://blog.csdn.net/Aidam_Bo/article/details/84320863
内存映射方法的使用:https://blog.csdn.net/Aidam_Bo/article/details/84317741