c++ - QFile寻道性能

标签 c++ qt file-io fstream seek

看来 QFile当处理常规文件(不是特殊的 Linux I/O 设备文件)时是随机访问,这意味着查找操作具有恒定时间复杂度 O(1)。

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

最佳答案

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

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

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

所以在理论上,寻找可能是O(log n);但实际上,对于现代文件系统而言,它基本上是恒定的。

关于c++ - QFile寻道性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6171403/

相关文章:

c++ - 通过模板发布 C++ Eigen::Matrix 类型

c++ - 如何使用 BOOST_THROW_EXCEPTION?

python - 我如何在 Python 中使用 ITK 类

c - 以非二进制模式从程序中操作(读/写)文件数据

c# - C# 中具有未定义行为的代码

c++ - QT C++ QPainter - 如何正确使用 'this'

qt - 为什么 QGroupBox 小部件不会随窗口的其余部分动态调整大小?

c++ - Qt - 当另一个对话框关闭时如何做我想做的事?

java - 我在服务器上有一个共享文件夹,我想在其中使用 java 创建文件和子文件夹?

c# - 无法删除从 C# 应用程序启动的子进程中的文件