ByteBuffer.allocateDirect() を使用して、ファイルをメモリに読み込むためのバッファ メモリを割り当て、最終的にそのファイルのバイトをハッシュして、そこからファイル ハッシュ (SHA) を取得しています。入力ファイルのサイズは、数 KB から数 GB までさまざまです。
バッファサイズの選択に関して、いくつかのスレッドとページ (SO の一部も含む) を読みました。部分ブロックなどの読み取り操作の可能性を最小限に抑えるために、ネイティブ FileSystem が使用するものを選択することをお勧めする人もいます。4100 バイトのバッファーと NTFS の既定値は 4096 であるため、余分な 4 ビットは別の読み取り操作を必要とし、非常に無駄になります。
したがって、2、1024、2048、4096、8192 などの累乗に固執します。32KB のサイズの推奨バッファーを見たことがありますが、バッファーを入力ファイルのサイズにすることを推奨するものもあります (小さなファイルにはおそらく問題ありませんが、大きなファイルについて?)。
ネイティブのブロックサイズのバッファに固執することはどれほど重要ですか? 現代的に言えば(少なくとも8Mbのオンドライブキャッシュを備えた最新のSATAドライブ以上、およびI / Oを最適化するための他の最新のOS「魔法」を想定)バッファーサイズはどれほど重要であり、設定するサイズをどのように決定するのが最適ですか?静的に設定するか、動的に決定できますか? 洞察をありがとう。