在处理常规文件(不是特殊的Linux /O设备文件)时,QFile似乎是随机访问的,这意味着查找操作具有固定时间复杂度O(1)。
然而,我还不能确认这一点。通常,当跳转到文件中的特定位置(用于写入或读取)时,std::fstream和QFile是否提供恒定时间运行时间复杂性?
发布于 2011-05-30 08:57:57
简而言之,答案是“是的,出于实际目的”。长长的答案是..。很复杂哦。
在文件流上查找最终会调用底层文件描述符上的lseek(),其性能取决于内核。
运行时间将取决于您使用的文件系统以及文件的大小。随着文件变得越来越大,随机寻道需要追逐更多级别的“间接”索引块。但是,即使对于最大2^64字节的文件,级别的数量也是屈指可数的。
因此,在理论上,查找可能是O(log );但在实践中,对于现代文件系统,它本质上是常量。
https://stackoverflow.com/questions/6171403
复制相似问题