java 大文件 md5_使用Java为大文件生成MD5非常慢
我用nio重寫你的代碼,代碼有點像下面:
private static String generateMD5(FileInputStream inputStream){
if(inputStream==null){
return null;
}
MessageDigest md;
try {
md = MessageDigest.getInstance("MD5");
FileChannel channel = inputStream.getChannel();
ByteBuffer buff = ByteBuffer.allocate(2048);
while(channel.read(buff) != -1)
{
buff.flip();
md.update(buff);
buff.clear();
}
byte[] hashValue = md.digest();
return new String(hashValue);
}
catch (NoSuchAlgorithmException e)
{
return null;
}
catch (IOException e)
{
return null;
}
finally
{
try {
if(inputStream!=null)inputStream.close();
} catch (IOException e) {
}
}
}在我的機器上,為大文件生成md5代碼大約需要30秒,當然我也會測試你的代碼,結果表明nio不會提高程序的性能。
然后,我試圖分別得到io和md5的時間,統計數據表明慢文件io是瓶頸,因為大約有5/6的時間用于io。
通過使用@Sticky提到的Fast MD5庫,生成md5代碼只需15秒,這一改進非常顯著。
總結
以上是生活随笔為你收集整理的java 大文件 md5_使用Java为大文件生成MD5非常慢的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 实例变量初始化_java学习之
- 下一篇: mysql2005错误_sql-serv