QFile搜索性能

3

看起来当使用普通文件(而不是特殊的Linux I/O设备文件)时,QFile是随机访问的,也就是说,寻址操作具有常数时间复杂度O(1)。

然而,我还没有能够确认这一点。一般来说,在跳转到文件中的特定位置(用于写入或读取)时,std::fstreamQFile是否提供恒定的运行时间复杂度?

1个回答

6
短答案是“是的,出于实际目的而言是可以的”。长答案是……这很复杂。
在文件流中进行搜索最终会调用底层文件描述符上的lseek()函数,其性能取决于内核。
运行时间将取决于您使用的文件系统以及文件的大小。随着文件越来越大,随机查找需要追踪更多级别的“间接”索引块。但即使对于高达2^64字节的文件,级数也只有几个。
因此,理论上,寻求可能是O(log n);但在实践中,对于现代文件系统来说,它基本上是恒定的。

特别是当前几个级别在块缓存中时! :) - genpfault

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