我有一个 C 应用程序(VStudio 2010,win7 64 位)在具有双至强芯片的机器上运行,这意味着 12 个物理内核和 24 个逻辑内核,以及 192 gig 的内存。编辑:操作系统是 win7(即 Windows 7、64 位)。
该应用程序有 24 个线程(每个线程都有自己的逻辑核心)进行计算并填充大量 C 结构的不同部分。当所有线程都完成时(并且线程都完全平衡,因此它们同时完成),该结构约为 60 GB。
(我可以控制硬件设置,因此我将使用 6 个运行 RAID 0 的 2tb 驱动器,这意味着写入的物理限制大约是平均顺序写入速度的 6 倍,或大约 2 gig/秒。)
将其写入磁盘的最有效方法是什么?显然,I/O 时间将使计算时间相形见绌。从我对这个主题的研究来看,似乎 write() (而不是 fwrite() )是要走的路。但是在设置缓冲区大小等方面,我可以在软件方面进行哪些其他优化。 mmap 会更有效吗?