我有一些巨大的(几千兆字节)ASCII 文本文件,我需要逐行读取,将某些列转换为浮点数,并对这些数字进行一些简单的操作。这是非常简单的事情,除了我认为必须有一种方法来加速它。该程序从不使用相当于 100% 的 CPU 内核,因为它花费大量时间等待 I/O。同时,它花费了足够的时间进行计算而不是 I/O,它只执行大约 8-10 MB/秒的原始磁盘 I/O。我已经看到我的硬盘驱动器做得比这要好得多。
在单独的线程中进行 I/O 和处理可能会有所帮助吗?如果是这样,实现这一点的有效方法是什么?一个重要的问题是如何分配内存来保存每一行,这样我就不会遇到瓶颈。
编辑:我现在使用的是 D 编程语言,版本 2 标准库,主要是更高级别的函数,用于大多数这些东西。std.stdio.File 使用的缓冲区大小为 16 KB。