【问题标题】:QFile seek performanceQFile 寻道性能
【发布时间】:2011-05-30 00:49:33
【问题描述】:

似乎QFile 在处理常规文件(不是特殊的 Linux I/O 设备文件)时是随机访问,这意味着查找操作的时间复杂度为 O(1)。

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 尤其是当前几级在块缓存中时! :)
    猜你喜欢
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-24
    • 2021-06-12
    • 1970-01-01
    相关资源
    最近更新 更多