我需要处理比可用RAM大的大数据矩阵文件。例如,矩阵有2500行和100万列,这导致~20 GB。基本上我只需要将数据读入内存,根本不需要写入操作。
我认为memory mapping会起作用。但事实证明,由于RAM会爆炸,效率不高。这是因为操作系统将始终自动将数据(页面)缓存到内存中,直到RAM满为止。之后,就像数据大于RAM的情况一样,会出现页面错误,因此页面输入和页面输出过程本质上是磁盘读/写并降低了速度。
我需要指出的是,我还想随机读取一些数据子集,比如行1000到1500和1000到5000列。
[编辑]
数据文件是一个txt文件,格式很像矩阵。基本上,我需要在大数据矩阵中读取,并逐列与另一个矢量交叉产生。
[结束编辑]
我的问题是:
非常感谢你!