我已将文件读入缓冲区(mmap),但它非常大,我必须对数据执行大量操作。
每一行(由\ n指定)独立于其他行,因此我不需要任何上下文。
我想以线程方式做到这一点。我不确定这里的最佳方法。
如果我产生X线程,那么获取这个文件的最快方法是什么?我可以像#3;线程1,从0-X读取。线程2,从X + 1-Y等读取" ?
答案 0 :(得分:1)
基本假设是你有N个核心,M MB的可用物理内存,F是文件的大小。最佳结果是所有核心和所有物理内存都在使用中,但没有分页。典型数字可能是8核和6GB可用内存。
一个合理的起点是:
这应该使所有内核保持接近最大CPU,系统线程执行大部分I / O.在读取文件之前,I / O通道应该是饱和的,并且I / O将与CPU重叠。检查没有分页很重要。调整块大小以最大化重叠。