有人可以帮助我了解硬盘搜索的工作原理吗?
我有一个小的二进制数据库文件,它的读取性能是绝对必要的。如果我需要跳过文件中的几个字节,使用 seek() 还是 read() 会更快,然后丢弃不需要的数据。
如果硬盘的平均寻道时间为 10ms,读取速度为 300MB/s,我计算出 read() 比值小于 3MB 的 seek() 更快。是真的?执行新搜索时是否有开销,而读取现有流没有?
您认为哪种文件结构更适合索引。
Entry1:Value:PointerIntoToData
Entry2:Value:PointerIntoToData
Entry3:Value:PointerIntoToData
Data, Data, Data
Or
Entry1:Value:Data
Entry2:Value:Data
Entry3:Value:Data
读取条目时,如果值不正确,它将被忽略。因此,当流式传输文件时,它更快: 1. 当不需要条目时使用 seek() 跳过它 2. 当不需要条目时读取它然后丢弃数据 3. 或使用第一个结构,当最后需要将 seek() 输入到数据存储库中。
条目是 4 个字节,值是 8 个字节,数据是 12KB
干杯