Mam problem z wydajnością SHA-1 na Androida. W języku C# otrzymuję obliczony skrót w około 3 s, same obliczenia dla systemu Android trwa około 75s. Myślę, że problem polega na odczytaniu operacji z pliku, ale nie jestem pewien, jak poprawić wydajność.Android, obliczanie skrótu SHA-1 z pliku, najszybszy algorytm
Oto moja metoda generowania skrótu.
private static String getSHA1FromFileContent(String filename)
{
try
{
MessageDigest digest = MessageDigest.getInstance("SHA-1");
//byte[] buffer = new byte[65536]; //created at start.
InputStream fis = new FileInputStream(filename);
int n = 0;
while (n != -1)
{
n = fis.read(buffer);
if (n > 0)
{
digest.update(buffer, 0, n);
}
}
byte[] digestResult = digest.digest();
return asHex(digestResult);
}
catch (Exception e)
{
return null;
}
}
Jakieś pomysły, w jaki sposób mogę poprawić wydajność?
jaki jest rozmiar pliku, który czytasz? – SirDarius
Spróbuj uruchomić swój kod bez metody 'asHex (..)' (po prostu zwróć bajt []). –
Używam pliku 6 MB, usunięcie asHex (..) nie pomogło:/ –