我正在编写一个处理多个文件的程序,每个文件大小约为 6 GB(来自服务器的大日志文件)。但是我只使用了 25% 的 CPU(4 个可用的 CPU 线程中有 1 个),因为我无法将程序拆分为不同的线程,工作必须按顺序完成。
因此,我正在考虑同时处理多达 4 个文件,因为我有一个四核 CPU,但我受到 HDD 随机磁盘访问性能的限制。
但几天后,我将使用带 SSD 和 8 GB 内存的笔记本电脑。是否可以将每个文件的前 1 GB 映射到内存中并在 4 个不同的线程中处理它们?当我到达映射文件的末尾时,我应该能够在内存中映射下一个 1 GB 的文件以继续。我想对于 SSD 来说,将 1 GB 映射到内存应该不是问题,因为它的读取速度约为 400 MB/s。
我知道这可以使用 FileChannel 来完成,但我不确定是否只映射文件的一部分。
谢谢,西贝