【发布时间】:2010-10-10 16:00:48
【问题描述】:
有人可以帮助我了解硬盘搜索的工作原理吗?
我有一个小的二进制数据库文件,它的读取性能是绝对必要的。如果我需要跳过文件中的几个字节,使用 seek() 还是 read() 会更快,然后丢弃不需要的数据。
如果硬盘的平均寻道时间为 10 毫秒,读取速度为 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. 或者使用 first 结构,当一个条目需要 seek() 到最后的数据存储库时。
Entry 4 bytes,value 8 bytes & data 12KB
干杯
【问题讨论】:
标签: c++ hardware hard-drive