質問

次のコードを使用して、ファイルのチェックサムを取得しています。計算中に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();

swree.sleep(MS)以外の最大CPUを使用してコードを減らすために何ができるか(MS)

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

役に立ちましたか?

解決

使用できます Thread.setPriority(int newPriority) スレッドの優先順位を減らす方法。これにより、他のより優先度の高いスレッドがより頻繁に実行されます。ただし、MD5は優先順位を単独で去ったかのように迅速に計算されません。この計算をできるだけ早く完了したいのはなぜですか?

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

他のヒント

私はむしろOSに優先管理を捧げたいと思います。Windowsについては、アプリを始めることができます

start /low your_executable
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top