使用dbms样式访问模式读取文件的最佳方法是什么?我的意思是:
此类偏移列表的示例: 1,2,3,4,5,6,7,8,1000,1001,1003,1004,1005,1010,1011,1012,31004,31005,31006。
我对使用哪种策略以获得最佳表现感到困惑。
答案 0 :(得分:1)
我不知道它是否最终是“最佳”,但我可能mmap()
该文件,然后使用madvise()
尝试强制系统进入故障前页面范围。显然,这也需要在你的偏移列表上进行一些计算以确定连续的范围(好吧,它实际上并不需要它,但这会减少madvise()
次调用并且如果有很多则会获得一点效率这些范围)。故障前的多长时间取决于您在每个页面/范围上花费多少时间进行您正在尝试的任何计算,因此需要进行一些测试/调整。您还可以使用madvise()
提示您在完成后不再需要范围,因此它可能会碰到要释放的下一个列表的前面。