それぞれのサイズが約 6 GB の複数のファイル (サーバーからの大きなログファイル) を処理するプログラムを作成しています。しかし、プログラムを異なるスレッドに分割できないため、CPU の 25% しか使用していません (使用可能な 4 つのうち 1 つの CPU スレッド)。作業は順番に実行する必要があります。
クアッドコアのCPUを持っているので、同時に4ファイルまで処理しようと考えていましたが、HDDのランダムディスクアクセス性能に限界があります。
しかし、数日後には、SSD と 8 GB の RAM を搭載したラップトップを使用することになります。たとえば、メモリ内の各ファイルの最初の 1 GB をマップし、それらを 4 つの異なるスレッドで処理することは可能でしょうか? そして、マップされたファイルの最後に到達したら、メモリ内のファイルの次の 1 GB をマップして続行できるはずです。1 GB をメモリにマッピングすることは、SSD では約 400 MB/秒の読み取り速度になるため、問題にはならないはずです。
これは FileChannel を使用して実行できることはわかっていますが、ファイルの一部のみをマッピングすることについてはわかりません。
ありがとう、シーベ