首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高效计算MD5校验和

高效计算MD5校验和
EN

Stack Overflow用户
提问于 2010-12-14 22:10:22
回答 2查看 3.1K关注 0票数 0

我使用以下代码来获取文件的校验和。它在计算过程中使用了50%的CPU。

代码语言:javascript
复制
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以外的最大CPU (Ms)

致敬,金斯利·鲁本·J

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-14 22:13:06

您可以使用Thread.setPriority(int newPriority)方法来降低线程的优先级。这将导致其他更高优先级的线程更频繁地执行。但是,MD5的计算速度不会像不考虑优先级那样快--为什么不希望这个计算尽可能快地完成呢?

编辑:这里的是一个"Fast MD5" implementation,它的性能比的默认java.security.MessageDigest实现有了显著的提高(平均快了26%)。有关详细信息,请参阅作者的页面,包括code examplesbenchmarks。代码可以在GNU LGPL 2.1 license下找到。

票数 2
EN

Stack Overflow用户

发布于 2010-12-14 22:26:05

我宁愿把优先级管理献给os,对于windows,你可以用它来启动你的应用。

代码语言:javascript
复制
start /low your_executable
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4440018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档