在C++中并行加载128个文件

use*_*173 1 c++ parallel-processing

我一直在研究一个项目,新的要求是将128个文件并行加载到物理内存中.所有这128个文件都驻留在同一目录/文件夹中.是否有可用于解决此问题的算法或解决方案?我需要用C++编写代码.

Ben*_*igt 7

加载128个文件的最快方法是按顺序.并行性不起作用,因为磁盘头一次不能存在于多个位置.即使使用随机存取存储设备(如SSD)或磁盘的DRAM缓存,它们仍然必须按顺序穿过总线.

读完之后,它们肯定可以并存在内存中.

我建议使用for循环来检查文件大小,分配内存和读取每个文件.循环将迭代128次.当您获得每个文件时,您可以与后续读取并行地开始数据处理.


并行计算可以加快速度,因为您拥有多核处理器.重叠的网络请求可以加快速度,因为往返延迟很长. 只有当您有多个磁盘时,并行磁盘I/O才能加速,并且数据在它们之间进行适当分割.你的不是.(如果您使用RAID条带集,磁盘控制器将发出并行读取而您的应用程序无需额外工作)

如果您的经理坚持"它必须并行读取,有必要",开始谈论128个磁盘阵列,使用花哨的覆盖系统使128个磁盘上的文件看起来好像在同一个目录中.

之后要求应该更加合理.

  • @ user2495173:是的,**它会让它们读得更慢**.您不希望并行I/O请求到本地存储.真.并行计算可以加快速度,因为您拥有多核处理器.只有当您有多个磁盘时,并行I/O才能加快速度,并且数据在它们之间进行适当分割.你的不是.(如果您使用RAID条带集,磁盘控制器将发出并行读取而您的应用程序无需额外工作) (3认同)