Я работаю над программой, которая ищет все диски для данного файла. На данный момент я вычисляю хэш MD5 для известного файла, а затем просматриваю все файлы рекурсивно, ища совпадение.Более быстрая альтернатива MD5?
Единственная проблема заключается в том, что MD5 болезненно медленный на больших файлах. Есть ли более быстрая альтернатива, которую я могу использовать, сохраняя при этом очень небольшую вероятность ложных срабатываний?
Весь код находится на C#.
спасибо.
Update
Я читал, что даже MD5 может быть довольно быстрым и дискового ввода/вывода должен быть ограничивающим фактором. Это заставляет меня думать, что мой код может быть не оптимальным. Есть ли проблемы с этим подходом?
MD5 md5 = MD5.Create();
StringBuilder sb = new StringBuilder();
try
{
using (FileStream fs = File.Open(fileName, FileMode.Open, FileAccess.Read))
{
foreach (byte b in md5.ComputeHash(fs))
sb.Append(b.ToString("X2"));
}
return sb.ToString();
}
catch (Exception)
{
return "";
}
Вместо того чтобы делать .ToString ("x2") использовать http://blogs.msdn.com/b/blambert/archive/2009/02/22/blambert-codesnip -fast-byte-array-to-hex-string-conversion.aspx, что сэкономит вам некоторое время. – tcables 2011-01-20 19:18:54
В чем смысл вызова `ToLower` и` ToUpper`? – 2013-09-28 17:38:44