ファイルから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、FileSystem、および HDDに依存し。他のハードウェア/ソフトウェアも混在している可能性があります。
(私はJavaに少し慣れていないことを指摘しておきます。そのため、これは私が知らないJava API呼び出しの可能性があります。)
編集:これが使用されるシステムの種類は事前にわからないので、多くのことを想定することはできません。(そのため、私はJavaを使用しています。)
編集:上記のコードには、投稿を小さくするためのtry..catchなどがありません。