使用QDataStream从文件中读取:使用缓冲区会更快吗?如何实现?

3
我使用QDataStream从文件中分批(例如100个字节)读取二进制数据进行处理。基本上,使用QFile作为参数创建QDataStream流QDataStream stream(&file)

到目前为止一切都运行良好。但我认为,通常情况下,如果不是逐个地从文件中读取小数据块,而是从由文件提供更大量的数据的缓冲区中读取,处理会更快。因此,我的问题如下:

  1. 当使用QDataStream时,是否已经在内部进行了这样的缓冲,以便手动实现的缓冲不会进一步加速处理?也就是说,Qt在内部从文件中读取的字节数多于100个字节吗?

  2. 如果没有,手动执行这样的缓冲的最佳方法是什么?使用QBuffer吗?

感谢您的答案和经验,

Chris

1个回答

4

QDataStream本身不执行任何缓冲(与例如QTextStream不同)。但是QFile默认提供一些缓冲,除非您使用QIODevice :: Unbuffered标志打开它。没有关于如何执行缓冲的信息,我不知道是否可以使用手动缓冲来加速它。但是,顺序读取是常见任务,我认为默认情况下它将快速工作。

QBufferQByteArray提供IO接口。如果您的数据块具有固定大小,并且您可以确保文件的任何100字节片段都可以使用QDataStream单独解析,则解决方案很简单:从QFile中读取一个QByteArray,并在该QByteArray上使用QDataStreamQBuffer将在内部使用)。但是,如果不是这种情况,则需要在需要时从缓冲区中删除已解析的数据并附加新数据,这是更复杂的任务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接