Qt - 写入速度 - 在 Qt 中写入文件的最快方法是什么?

Qt - Write Speed - What's the fastest method to write a file in Qt?

本文关键字:Qt 方法 是什么 速度 文件      更新时间:2023-10-16

我已经找到了一些关于Qt和用c++编写文件的帖子,但我没有找到现有方法的比较和对问题的满意答案"在Qt中编写文件的最快方法是什么?"…

任务:我需要写一大堆双精度值(大约500.000到100.000)到一个文件。由于我的程序结构,这些值保存在一个QList中,其中包含一些QVector(每个QVector具有相同的大小)。QVectors包含双精度值。此外,每个列(每个QList元素都是一个列)必须以不同的精度写入。每一列用一个t分隔。

我尝试了几种方法:

  • 使用<<
  • 将QTextStream转换为QFile
  • 使用QFile::write直接写入QFile
  • FILE and fwrite

最后,我在QTextStream和FILE中使用fwrite(几乎相同的速度)获得了最好的结果,QFile使用QFile::write稍微慢一点(可能是30%)。

但是我仍然认为一定有更快的方法。对于500.000双值,我的PC (Core2Duo)需要大约2s,这是相当长的时间。

我也考虑过使用Boost Karma c++库-你能推荐吗?http://www.boost.org/doc/libs/1_51_0/libs/spirit/doc/html/spirit/karma.html

假设您像下面这样做,您不太可能找到比fwrite更快的方法。

double values[1000] = {...};
fwrite(values, sizeof(double), 1000, f);