0

次のコードを使用して、ファイルのチェックサムを取得しています。計算時にCPUの50%を使用します。

MessageDigest md = MessageDigest.getInstance("MD5");
InputStream is = new FileInputStream("C:\\Temp\\Small\\Movie.mp4"); // Size 700 MB

byte [] buffer = new byte [blockSize];
int numRead;
do 
{
 numRead = is.read(buffer);
 if (numRead > 0) 
 {
  md.update(buffer, 0, numRead);
 }
} while (numRead != -1);

byte[] digest = md.digest();

Thread.sleep(ms)以外の最大CPUを使用することからコードを減らすために何ができるか

よろしく、キングスリールーベンJ

4

2 に答える 2

2

このThread.setPriority(int newPriority)メソッドを使用して、スレッドの優先度を下げることができます。これにより、他の優先度の高いスレッドがより頻繁に実行されるようになります。ただし、MD5は、優先度をそのままにしておく場合ほど速く計算されません。この計算をできるだけ早く完了させたくないのはなぜですか。

編集:これは「高速MD5」実装であり、Javaのデフォルトjava.security.MessageDigest実装よりも大幅にパフォーマンスが向上しています(平均で26%高速)。コード例ベンチマークなどの詳細については、作成者のページを参照してください。このコードは、GNULGPL2.1ライセンスの下で利用できます。

于 2010-12-14T14:13:06.360 に答える
0

私はむしろ優先管理をOSに捧げたいと思います。Windowsの場合、次のコマンドでアプリを起動できます。

start /low your_executable
于 2010-12-14T14:26:04.737 に答える