请看下面的代码(一种伪代码):
index = db.open()
fh = open('somefile.txt','rb')
for i in range(1000):
x = random_integer(1,5000)
pos,length = index[x]
fh.seek(pos)
buffer = fh.read(length)
doSomeThingWith(buffer)
fh.close()
db.close()
我使用数据库来索引.txt 文件中文本段的位置和长度,以进行随机检索。
难怪,如果重复运行上面的代码,执行时间会越来越少。
1) 是什么导致了这种加速?是因为内存中的东西还是“缓存”或其他什么?
2)有没有办法控制它?
3) 我与其他将文本段存储在 Berkeley DB 等中的方法进行了比较。当速度最快时,上面的代码比从 Berkeley DB 中检索要快。如何判断我的数据库+文件解决方案的性能?我的意思是,判断它至少“足够快”是否安全?