使用常规文件(不是特殊的Linux I / O设备文件)时,QFile似乎是随机访问,这意味着搜索操作具有恒定时间复杂度O(1)。
但是,我无法证实这一点。通常,当跳转到文件中的特定位置(用于写入或读取)时,std::fstream
和QFile
是否会提供恒定的运行时间复杂度?
答案 0 :(得分:4)
简短的回答是“是的,出于实际目的”。答案很长......这很复杂。
在文件流上寻找最终在底层文件描述符上调用lseek(),其性能取决于内核。
运行时间取决于您使用的文件系统以及文件的大小。随着文件变大,随机搜索需要追逐更多级别的“间接”索引块。但即使对于最多2 ^ 64字节的文件,级别数也只是少数。
所以理论上,寻求可能是O(log n);但实际上,对于现代文件系统来说,它基本上是不变的。