猿问

mmap()与读取块

mmap()与读取块

我正在开发一个处理文件的程序,该程序的大小可能是100 GB或更大。这些文件包含一组可变长度的记录。我已经启动并运行了第一个实现,并且现在正在寻求提高性能,特别是提高I/O的效率,因为输入文件被扫描了很多次。

有什么使用的经验法则吗?mmap()通过C+实现对块的读取fstream图书馆?我想要做的是将大块从磁盘读入缓冲区,从缓冲区处理完整的记录,然后读取更多。

这个mmap()代码可能会变得非常混乱,因为mmap代码块需要位于页面大小的边界上(据我理解),记录可能会跨越页面边界。fstreamS,我可以先开始记录,然后再开始阅读,因为我们不局限于阅读位于页面大小边界上的块。

我怎样才能在这两个选项之间做出决定,而不首先编写一个完整的实现呢?任何经验法则(例如,mmap()是快2倍)还是简单的测试?



慕森卡
浏览 315回答 3
3回答
随时随地看视频慕课网APP
我要回答