QFile寻求表现

时间:2011-05-30 00:49:34

标签: c++ qt file-io fstream seek

使用常规文件(不是特殊的Linux I / O设备文件)时,QFile似乎是随机访问,这意味着搜索操作具有恒定时间复杂度O(1)。

但是,我无法证实这一点。通常,当跳转到文件中的特定位置(用于写入或读取)时,std::fstreamQFile是否会提供恒定的运行时间复杂度?

1 个答案:

答案 0 :(得分:4)

简短的回答是“是的,出于实际目的”。答案很长......这很复杂。

在文件流上寻找最终在底层文件描述符上调用lseek(),其性能取决于内核。

运行时间取决于您使用的文件系统以及文件的大小。随着文件变大,随机搜索需要追逐更多级别的“间接”索引块。但即使对于最多2 ^ 64字节的文件,级别数也只是少数。

所以理论上,寻求可能是O(log n);但实际上,对于现代文件系统来说,它基本上是不变的。