前の質問で述べたように、最適なバッファー サイズ (通常は約 32 KB) があり、バッファーをこれより大きくすると、速度は遅くなります。デフォルトのバッファ サイズは 8 KB です。
ところで: L2/L3 CPU キャッシュの大きさは? (約 10 MB だと思います) プライマリ L1 キャッシュは約 32 KB ですか?
最速のキャッシュに収まるバッファを使用することで、最速のメモリを使用しています。メインメモリにのみ収まるバッファを使用することで、最も遅いメモリを使用しています (10 倍も遅くなります)。
あなたの質問に答えて。
私がしていることは、ISO-8859-1
エンコーディング、つまり(byte) ch
、一度に 1 バイトずつ ByteBuffer に書き込み、おそらくメモリ マップされていると仮定することです。
ガベージを作成せずに、ByteBuffer から書き込み/読み取りlong
を行うためのメソッドがあります。double
https://github.com/peter-lawrey/Java-Chronicle/blob/master/src/main/java/vanilla/java/chronicle/impl/AbstractExcerpt.java
このアプローチを使用すると、1 秒あたり約 500 万行をディスクに記録できます。