ファイルから MessageDigest (ハッシュ) を作成するメソッドがあり、これを多数のファイル (>= 100,000) に対して行う必要があります。パフォーマンスを最大化するには、ファイルからの読み取りに使用するバッファーをどのくらい大きくする必要がありますか?
ほとんどの人は基本的なコードに精通しています (念のためここで繰り返します):
MessageDigest md = MessageDigest.getInstance( "SHA" );
FileInputStream ios = new FileInputStream( "myfile.bmp" );
byte[] buffer = new byte[4 * 1024]; // what should this value be?
int read = 0;
while( ( read = ios.read( buffer ) ) > 0 )
md.update( buffer, 0, read );
ios.close();
md.digest();
スループットを最大化するためのバッファの理想的なサイズは? これはシステムに依存していることはわかっています。OS、ファイルシステム、およびHDD に依存していると確信しており、他のハードウェア/ソフトウェアが混在している可能性があります。
(私は Java に少し慣れていないので、これは私が知らない Java API 呼び出しである可能性があることを指摘しておく必要があります。)
編集:これが使用されるシステムの種類を事前に知らないため、多くを想定することはできません。(そのためJavaを使用しています。)
編集:上記のコードには、投稿を小さくするためのtry..catchなどのものがありません