使用QDataStream读取文件:使用缓冲区会更快吗?如何做到这一点



我使用QDataStream从文件中读取部分二进制数据(例如100字节),然后进行处理。基本上是QDataStream stream(&file),文件是QFile。

到目前为止一切都很好。但我想,通常情况下,当不是从文件中一个接一个地读取小数据部分,而是从具有较大数据量的文件提供的缓冲区时,处理速度会更快。以下是我的问题:

  1. 当使用QDataStream时,这样的缓冲是否已经在内部完成,这样手动实现的缓冲就不会进一步加快处理速度?也就是说,内部Qt会从文件中读取超过100个字节的数据吗?

  2. 如果没有,手动进行这种缓冲的最佳方式是什么?Q缓冲区?

感谢您的回答和经验,

Chris

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

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

相关内容

  • 没有找到相关文章

最新更新