巨大な(数ギガバイトの)ASCIIテキストファイルがあり、行ごとに読み取り、特定の列を浮動小数点に変換し、これらの数値に対していくつかの簡単な操作を行う必要があります。それはかなり簡単なことですが、それを全体的にスピードアップする方法がなければならないと私は考えています。このプログラムは、I / Oの待機に非常に多くの時間を費やすため、CPUコアの100%に相当するものを使用することはありません。同時に、I / Oの代わりに計算を行うのに十分な時間を費やしているため、rawディスクI / Oは約8〜10MB/秒しか実行されません。私のハードドライブはそれよりもはるかに優れているのを見てきました。
I / Oと処理を別々のスレッドで行うと役立つでしょうか?もしそうなら、これを実装する効率的な方法は何ですか?重要な問題は、私がボトルネックにならないように、各行を保持するためのメモリ割り当てをどうするかです。
編集:私は現在、Dプログラミング言語、バージョン2の標準ライブラリ、主に高レベルの関数を使用しています。std.stdio.Fileで使用されるバッファサイズは16KBです。