Estoy usando el siguiente código para hacer una suma de comprobación de un archivo que funciona bien. Pero cuando genero un hash para un archivo grande, digamos 2 GB, es bastante lento. ¿Cómo puedo mejorar el rendimiento de este código?Mejore el rendimiento de SHA-1 ComputeHash
fs = new FileStream(txtFile.Text, FileMode.Open);
formatted = string.Empty;
using (SHA1Managed sha1 = new SHA1Managed())
{
byte[] hash = sha1.ComputeHash(fs);
foreach (byte b in hash)
{
formatted += b.ToString("X2");
}
}
fs.Close();
Actualizar:
Sistema:
OS: Windows 7 de 64 bits, la CPU: I5 750, RAM: 4 GB, disco duro: 7200 rpm
Pruebas:
Prueba1 = 59.895 segundos
Test2 = 59.94 segundos
+1 solo por tratar de mejorar el rendimiento del bit más pesado, y no preocuparse de que el formato esté construido de una manera relativamente ineficiente :) –
:) probablemente debería cambiar eso a un generador de cadenas? –
¡Ah, ahora estás hablando de ese +1! Sin embargo, lo que puede valer la pena si produce tales cadenas hexagonales con la suficiente frecuencia es tener un método que lo haga (buen caso para un método de extensión). Una vez que se utilice potencialmente en algún lugar donde el rendimiento hará una diferencia más real, sería más útil mover el StringBuilder (creado en la capacidad adecuada) o acercarse a la matriz de tamaño fijo. –